Files
skills-win/smod_atsc_dev/references/fpga.md
T
2026-07-14 18:18:17 +08:00

3.9 KiB
Raw Blame History

FPGA 侧(my_exciter / RU_golden)

工程

my_exciter RU_golden
xpr E:\Xilinx_design\smod\SMOD_ATSC\my_exciter\my_exciter.xpr ...\RU_golden\RU_golden.xpr
top smod_top(my_exciter.srcs/sources_1/top/smod_top.v,~2300 行) RU_golden_top
作用 ATSC 激励器全功能 打底镜像:网口 + quickboot 自烧,用来兜底和支撑远程升级
器件 xc7a200tfbg676-2 同左

my_exciter 目录本身是 git 仓库根(imx6/ 也在里面)。RU_golden 的 xpr 引用了 my_exciter 里的少数源文件(ts_lock_top.vhd、sdram_tsoip_top.vhd),改动时留意。

RTL 目录(my_exciter.srcs/sources_1/)

目录 内容
top/ smod_top.v 顶层 + 时钟/AGC/DA 前处理/ORx 抽取等杂项
atsc_mod_xip/ 8VSB 调制核(加密 IP)
dpd/ 数字预失真
txagc/ 发射 AGC
asi_pre/, dvb_asi/, ts/ ASI / TS 输入与包同步(src_preproc、spi_lock_det)
tsoip/, tsoip_atsc/, udp/, sdram/ TS over IP 收发与缓存
tuner/ Sony CXD2878 tuner 的 TS 接口(TUN_D[7:0]/TUN_VLD/TUN_CLK)
quickboot/ SpiFlashProgrammer.vhd + SpiSerDes.vhd + spi_slave32.v —— 远程升级的 FPGA 侧
i2c/ imx6↔FPGA 的寄存器桥
gps/, uart/, misc/, bd_cfg/, coef/, ip/ 其余

约束在 constrs_1/new/:smod_ioplanning.xdc(SMOD 板的引脚,这块板用这个)、 project_ioplanning.xdc(旧板,别混用)、timing.xdc、timing_cleanup_120m.xdc、 bitstream.xdc、debug.xdc(当前为空,ILA 用 IP 例化而非 XDC 标记)。

用 vivado-mcp 干活

典型顺序(工具名即 mcp__vivado-mcp__*):

start_session(project=<xpr>)     # 打开工程
  → verilog_compile_check        # 改完 RTL 先做语法检查,比跑综合快得多
  → run_synthesis
  → get_critical_warnings        # 综合后立刻看,别等到实现完
  → run_implementation
  → generate_bitstream
  → get_timing_report / get_utilization_report
  → power_off → USB_Blast_off → power_on → (等 sys init over) → USB_Blast_on
  → program_device               # 下 bit(掉电即失)

其它常用:run_tcl / safe_tcl(任意 Tcl)、get_run_progress(长任务轮询)、 get_ip_status / inspect_ip_params、xdc_lint / xdc_auto_fix、get_io_report。

综合+实现在这个工程上要 20~40 分钟。改一行就重跑之前,先用 verilog_compile_check。

ILA

smod_top.v 里 ILA 是手工例化的 IP(不是 mark_debug)。历史上用过 ila_eth2、 ila_2、ila_3、ila_adrv9009_fb;当前活跃的是 u_ila_adrv9009_rx(复用 ila_adrv9009_fb IP,探针宽度 16,16,1,8,1,1,1,8,8,8,8,5)。

要换探针就直接改那个例化的 probe 连接。探针宽度必须和 IP 里配的一致,否则综合报错。 需要新宽度就改 IP 或换一个 ILA IP。

抓波形要 .ltx(impl_1/smod_top.ltx)。归档时 .bit / .ltx / .mcs 三件套用同一个 tag 放进 bitstream/,否则下次想复现就对不上号了。ILA 导出的 CSV 交给 /fft-analyse 做频谱。

固化前把调试 ILA 去掉,重新实现出干净的生产 bit:ILA 吃资源、恶化时序,还会和 imx6 抢寄存器总线。

时序

get_timing_report 上 WNS 常年在 -9 ~ -13 ns,路径落在 JESD204 TX 的 init_seq_data(jesd204_phy_1lane_38j82_refclk group)。这是基础设计里既有的 初始化序列 false path,与 ATSC 数据通路无关 —— JESD 链路实测能起来,RF/调制/tuner 都正常。

不要为了这个数字去改设计。真正要盯的是你改动那部分的时钟域和 CDC。

出 mcs

走 /fpga_update skill。一句话:远程升级要的是 _update.mcs,不是 write_cfgmem 的直接产物; 而且它走 TCP 1234,不走网页。