热度 20
2016-4-21 17:59
1428 次阅读|
0 个评论
1.ROM的读取 由于 ROM 是一种只读存储器,所以我们需要一个初始化文件来配置 ROM 中的 存储数据,因此接下来,我们需要首先建立这样的配置文件,在 Quartus 中,配 置文件可以选择 MIF 文件 ip核配置 代码: module ROM( clk, rst_n, data ); input clk,rst_n; output data; wire addr; rom_ctrl rom_ctrl( .clk(clk), .rst_n(rst_n), .addr(addr) ); my_rom my_rom( .address(addr), .clock(clk), .q(data) ); endmodule /* ROM 控制器的功能就是不断地输出 0—1023 递增的地址数据, 遍历 ROM 所有存储空间 */ module rom_ctrl( clk, rst_n, addr ); input clk,rst_n; output reg addr; always @(posedge clk or negedge rst_n) if(!rst_n) addr = 0; else if(addr 1023) addr = addr + 1; else addr = 0; endmodule 仿真: 2. Rom_Signaltap调试(SignalTapII 嵌入式逻辑分析仪) 在线调试也称作板级调试,它是将工程下载到 FPGA 芯片后分析代码运行的 情况。有人会以为,我们已经做过仿真了,甚至是时序仿真都通过了,还会存在 问题么?但是在实际中,还有以下情况我们需要用到在线调试: Ⅰ、 仿真不全面而没有发现的 FPGA 设计错误。很多情况下,由于太复杂,无法 做到 100%的代码覆盖率 ; Ⅱ、 在板级交互中,存在异步事件,很难做仿真,或者仿真起来时间很长,无法 运行; Ⅲ、 除了本身 FPGA 外,还可能存在板上互连可靠性问题、电源问题和 IC 之间的 信号干扰问题,都可能导致系统运行出错 ; SignalTap II 基本上采用了典型外部逻辑分析仪的理念和功能,却无需额外的 逻辑分析设备、测试 I/O 、电路板走线和探点,只要建立一个对应的 .stp 文件并 做相关设置后,与当前工程**编译, 用一根 JTAG 接口的下载电缆连接到要调 试的 FPGA 器件即可。 SignalTap II 对 FPGA 的引脚和内部的连线信号进行捕获后, 将数据存储在一定的 RAM 块中。因此,用于保存采样时钟信号和被捕获的待测 信号的 RAM 块,也会占用逻辑资源( LE )、 Memory 资源 (Block RAM) 和布线资 源。占用逻辑资源的多少基于信号或者被监测的通道数量,以及触发条件的复杂 程度;所使用的存储器数量取决于被监测的通道数量和采样深度。理论上可支持 1024 个通道,每个通道可采集 128k Bit 数据,但是这两个极限值没办法同时满足, 因为若同时满足,则等价于占用 32768 个 M4K 模块,没有 FPGA 器件能够提供那 么多存储器资源。 在rom的基础上修改.imf文件0-126,127-改成三角波形,然后仿真 在使用 SignalTap II时需要修改ip核中的数据, 设置 SignalTap II 的clk信号, 添加需要的data,以及 addr 保存后重新全编译工程,然后在 SignalTap II 查看抓取的波形 同样数据可以再in-system memory content editor中查看