3.9 KiB
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,不走网页。