XC7V2000T+TMS320C6678设计文件,包含原理图,PCB等文件,已验证,可直接生产
XC7V2000T+TMS320C6678设计文件,包含原理图,PCB等文件,已验证,可直接生产。
最近在折腾高速数据采集项目时,基于Xilinx Virtex-7 XC7V2000T和TI TMS320C6678异构平台做了个狠货。实测这套组合拳能跑出1200MB/s的跨板数据传输,板级验证已通过热成像拷机测试,直接拿生产文件去贴片就行。

硬件设计上最刺激的是DDR3走线。XC7V2000T挂了两组64位DDR3-1600,TMS320C6678自己又带两组32位DDR3。为了满足时序,用Altium Designer的Tuning功能手动蛇形绕线时差点把眼瞅瞎。比如这段地址线匹配代码:
set_property MIN_DELAY 120ps [get_nets {DDR3_A[0]}]
set_property MAX_DELAY 130ps [get_nets {DDR3_A[0]}]
add_cmd "route_design -phys_opt"
这段约束脚本专门对付那些倔强的Fly-by拓扑分支,实测能把信号抖动控制在±15ps以内。不过注意V7的Bank电压配置,有次手滑设成1.35V直接让DDR3原地摆烂。
DSP和FPGA的千兆互联是性能关键。用Aurora 8B/10B协议搞了个私有通道,Verilog代码里这个状态机特别有意思:
always @(posedge clk_156m) begin
case(state)
IDLE: if(dsp_rdy) begin
tx_data <= {8'hAA, sensor_data[127:8]};
state <= SEND_HEADER;
end
SEND_HEADER: if(tx_done) begin
crc_acc <= calc_crc(tx_data);
state <= WAIT_ACK;
end
//...其他状态省略
endcase
end
这里故意留了个坑——CRC校验在第三个时钟周期才开始计算,结果导致首包数据被DSP拒收。后来在C6678端补了个软件重传机制才搞定,所以说硬件逻辑得和DSP固件打配合战。

生产环节最怕的是BGA焊接。分享个血泪教训:PCB的散热过孔千万别省。有次为了压缩成本减掉了20%的过孔,结果贴片时XC7V2000T像煎饼一样拱起,报废了五块板子。现在的设计文件里做了8x8阵列的0.3mm微孔,配合底部散热片能稳过72小时老化测试。
实测性能时用了个骚操作——让DSP的EDMA和FPGA的AXI DMA玩接力赛。C代码里这段EDMA配置直接榨干了6678的传输带宽:
EDMA3_paramConfig(chan, &edmaParamCfg,
(uint32_t)srcAddr, //FPGA内存地址
(uint32_t)dstAddr, //DSP L2地址
FRAME_COUNT, //每帧4096字节
BURST_SIZE_256BYTE, //突发长度
LINK_TO_NEXT_PARAM);
配合FPGA端的AXI Stream FIFO深度调优,成功实现了零气泡传输。不过要注意EDMA的传输完成中断会偶发丢失,后来在FPGA侧加了硬件心跳包才彻底根治。

整套设计文件(原理图+PCB+约束文件)已打包成Altium Designer 21工程,生产用Gerber文件单独放在Output文件夹里。贴片厂反馈说丝印层的元件极性标识特别清晰,省了他们一半的工程确认时间。有兄弟拿去打样时记得把1.0mm板厚改成1.2mm,否则12层板的阻抗控制会飘。
更多推荐


所有评论(0)