小梅哥FPGA:ROM_SignalTap Ⅱ
目标:
1.将实现一组固定的数据(三角波形表)存储在FPGA中,并使用IP核构建的片上ROM进行存储,开发板上电后,系统开始从ROM中读取数据,并将数据直接通过并口输出,通过使用SignalTap Ⅱ软件实时抓取并口上的数据,显示得到三角波形。
2.使用Quartus Ⅱ软件中提供ISMCE工具在线更改ROM中的mif文件
本章将学会的技能:
1.如何调用ROM的IP核
2.如何给mif文件写入数据,也就是给ROM写入数据
3.如何使用FPGA的多余硬件来构造一个Signal Tap Ⅱ来抓取并口数据
4.如何使用ISMCE工具在线更改ROM中的数据
一.ROM-IP核的使用
①.建立mif文件
②.用excel为mif文件写入数据,即为ROM写入数据
将Excel中的数据粘贴进mif中
并且必须保存哎prj下,不能保存在子目录下
③.建立ROM的IP核
加入mif文件
二.Testbench的书写及仿真结果
①.testbench
`timescale 1ns/1ps
`define clk_period 20
module rom_tb;
reg[7:0] addr;
reg clk;
wire[7:0]q;
integer i;
rom rom(
.address(addr),
.clock(clk),
.q(q)
);
initial clk = 1;
always#(`clk_period/2) clk =~clk;
//每过1个时钟周期,就让地址加1,即每个时钟周期读出rom中的一个数据
initial begin
addr = 8'd0;
#(`clk_period+1);
for(i=0;i<2550;i=i+1)begin
#`clk_period;
addr = addr+1;
end
#(`clk_period*50);
$stop;
end
endmodule
②.仿真结果
仿真出现的是二进制格式,改成无符号数,并且改成线性就可以得到波形了
三.Signal Tap Ⅱ的使用及板级验证
①.要进行板机验证必须要创建一个顶层模块,对地址进行更改
module ROM_top(
clk,
Rst_n,
q
);
input clk;
input Rst_n;
output[7:0]q;
reg[7:0]addr;
rom rom(
.address(addr),
.clock(clk),
.q(q)
);
always@(posedge clk or negedge Rst_n)
if(!Rst_n)
addr <= 8'd0;
else begin
addr <= addr +1'b1;
end
endmodule
②.创建Signal TapⅡ
③.引脚分配
④.板机验证+SignalTap监测
四.使用ISMCE工具在线修改ROM中的数据