FPGA学习笔记_ROM核调用与调试

FPGA学习笔记

ROM核调用与调试

1. ROM存储器IP核的使用
2. 创建.mif文件
3. In system memory content editor内存查看工具的使用
4. Signal tapII工具使用
5. Verilog 代码
6. Modelsim仿真
7. FPGA板级验证

ROM核调用与调试

  • 目标:调用Quartus软件中提供的ROM核并进行系统设计
  • 现象:将一组数据(三角波形表)存储在FPGA中的使用IP核构建的片上rom中,开发板上电后,系统开始开始从rom中读取数据,并将数据直接通过并口输出。通过signal tap II软件实时抓取并口的数据,显示(三角波形)。然后使用quartus软件中提供的in system memory content editor工具在线更改rom中的数据(正弦波形),然后再次观察signal tapII工具抓取到的波形数据
  • 知识点:
  1. ROM存储器IP核的使用
    创建.mif文件
  2. In system memory content editor内存查看工具的使用
  3. Signal tapII工具使用
    嵌入式逻辑分析仪/片上逻辑分析仪,能够直接抓取芯片节点数据或者外部IO口数据,通过JTAG口与PC机相连。PC机上的quaturs软件中提供了signal tap II 软件,通过JTAG线与片上逻辑分析仪通信,将片上逻辑分析仪抓取到的设计中的节点信息,实时发送给PC机,PC机通过singal Tap II软件显示数据。

FPGA学习笔记_ROM核调用与调试_第1张图片

1. ROM存储器IP核的使用

  • (1). IP Catalog, 搜索ROM,双击ROM:1-port,根据需求设置数据位宽,rom内存等信息,点击next

FPGA学习笔记_ROM核调用与调试_第2张图片

  • (2). 根据需求选择寄存端口,点击next

FPGA学习笔记_ROM核调用与调试_第3张图片

  • (3). 选择.mif文件,点击next

FPGA学习笔记_ROM核调用与调试_第4张图片

  • (4). 点击next

FPGA学习笔记_ROM核调用与调试_第5张图片

  • (5). 点击finish

FPGA学习笔记_ROM核调用与调试_第6张图片

  • (6). 生成.qip文件,右键点击,设置set as top level entity, 分析和综合

FPGA学习笔记_ROM核调用与调试_第7张图片

  • (7). 编写testbench,仿真验证功能

2. 创建.mif文件

  • (1). 创建新的文件,选择memory initialization file, 点击OK

FPGA学习笔记_ROM核调用与调试_第8张图片

  • (2). 设置位宽和内存深度,点击OK,生成如下文件

FPGA学习笔记_ROM核调用与调试_第9张图片
FPGA学习笔记_ROM核调用与调试_第10张图片

  • (3). 根据需求更改内存值后,点击file,save as,设置好名称,将.mif文件保存在工程文件夹内,.mif文件设置完成

FPGA学习笔记_ROM核调用与调试_第11张图片
FPGA学习笔记_ROM核调用与调试_第12张图片


3. in system memory content editor内存查看工具的使用

  • (1). tool–>in system memory content editor

FPGA学习笔记_ROM核调用与调试_第13张图片

  • (2). 显示如下界面,点击读取,读取rom内的数据

FPGA学习笔记_ROM核调用与调试_第14张图片

  • (3). 右键点击rom,选择import data from file

FPGA学习笔记_ROM核调用与调试_第15张图片

  • (4). 选择实现编辑好的.mif文件,点击open

FPGA学习笔记_ROM核调用与调试_第16张图片

  • (5). 点击写入,则文件内的数据将被写入rom中

FPGA学习笔记_ROM核调用与调试_第17张图片

  • (6). 写入后的数据在signal tapII内显示

FPGA学习笔记_ROM核调用与调试_第18张图片


4. signal tapII工具使用

  • (1). 新建文件,点击signal tap logic analyzer file

FPGA学习笔记_ROM核调用与调试_第19张图片

  • (2). 按顺序添加clk信号

FPGA学习笔记_ROM核调用与调试_第20张图片

  • (3).按顺序 添加待观测信号

FPGA学习笔记_ROM核调用与调试_第21张图片

  • (4). 设置完成后,点击file,设置名称和路径后,保存

FPGA学习笔记_ROM核调用与调试_第22张图片

  • (5). 根据设计,设置存储区深度,生成.stp文件

FPGA学习笔记_ROM核调用与调试_第23张图片

  • 逻辑分析仪保证采样时钟比待采样信号速率高
  • Sample depth:
    存储器深度,抓取的数据,相当于内部开了一个存储器,连续的抓取需要观测数据,由于速度非常快,所以要先将待观测的数据全部存储在存储器中,再从存储器中通过JTAG线,发送到电脑上,实时显示;否则由于JTAG本身速度不是特别高,无法传输50MHz的直接采样的数据,使用这种存储的方式来降速

FPGA学习笔记_ROM核调用与调试_第24张图片

  • (6). 按下面顺序运行逻辑分析仪

FPGA学习笔记_ROM核调用与调试_第25张图片

  • (7). 连续实时检测数据

FPGA学习笔记_ROM核调用与调试_第26张图片

  • (8). 将实时数据格式设置为线形图显示,形状如下

FPGA学习笔记_ROM核调用与调试_第27张图片
FPGA学习笔记_ROM核调用与调试_第28张图片


5. Verilog 代码

//----top---------------------------------------
module rom_top(

	input clk,
	input rst_n,
	output [7:0] q
);

	reg [7:0] addr;

rom uut(
		.address(addr),
		.clock(clk),
		.q(q)
	);

	always@(posedge clk or negedge rst_n)
		if(!rst_n)
			addr <= 8'd0;
		else
			addr <= addr + 8'd1;
endmodule

//----testbench------------------------------
`timescale 1ns/1ns
`define clock_period 20

module tb_rom;
	reg clk;
	reg [7:0] addr;
	wire [7:0] q;

	rom uut(
		.address(addr),
		.clock(clk),
		.q(q)
	);
	integer i;
	initial clk = 1;
	always #(`clock_period/2) clk = ~clk;
	
	initial begin
		addr =8'd0;
		for(i=0;i<2550; i=i+1)begin
		#(`clock_period);
		addr = addr + 8'd1;
		end
		#(`clock_period*50);
		$stop;
	end
endmodule


6. Modelsim仿真

  • 仿真波形调试
    右键点击信号,选择format–>analog(automatixc),将信号值转换为模拟值FPGA学习笔记_ROM核调用与调试_第29张图片

  • 三角波形

在这里插入图片描述

  • 正弦波形

在这里插入图片描述

4. FPGA板级验证

  • 波形由三角形转换为正弦形

FPGA学习笔记_ROM核调用与调试_第30张图片

FPGA学习笔记_ROM核调用与调试_第31张图片


【注】:个人学习笔记,如有错误,望不吝赐教,这厢有礼了~~~


你可能感兴趣的:(FPGA学习笔记,fpga/cpld,rom,verilog)