问题是这样的:从CPU过来的数据总线,接到FPGA了,FPGA后面又接了一个CPLD,等于说,FPGA既要将数据总线自己用,又要输出给CPLD用,该怎么实现了?
难题是数据总向是双向的不好办!
因为两片FPGA之间的连线资源较多,把它们之间的数据总结分为送出去的数据线和接收回的数据线了, cpu_data = (out_en_a = 1'b1) ? data_out_a : 'bz; cpu_data = (out_en_b = 1'b1) ? data_out_b : 'bz; data_in_a = cpu_data; data_in_b = cpu_data; 根据地址线分段的不同对out_en_a和out_en_b进行操作,比如最高位为0时分给FPGA使用,最高位为1时分给CPLD使用。
有的书上建议在内部把输入和输出分开,数据总线到在FPGA后分开,那总线又要和CPLD相连的话,再把分开的总线合起来
如下面:
data_in_a = cpu_data; data_in_b = cpu_data; 这个不变 cpu_data = (out_en_a = 1'b1) ? data_out_a : 'bz; cpu_data = (out_en_b = 1'b1) ? data_out_b : 'bz; 改为 assign data_out_ab = (addr_sel = 1'b0) ? data_out_a : data_out_b; assign cpu_data = (out_en = 1'b1) ? data_out_ab : 'bz; 其中data_in_b 和data_out_b送往CPLD
|