Verilog HDL数字设计教程(贺敬凯)第6章

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

lpm_counter_component.lpm_port_updown =
"PORT_UNUSED",
lpm_counter_component.lpm_type = "LPM_COUNTER", lpm_counter_component.lpm_width = 6; endmodule
第6章 Verilog HDL仿真技术
第6章 Verilog HDL仿真技术
altsyncram altsyncram_component ( .clock0 (inclock), .address_a (address), .q_a (sub_wire0),
.aclr0 (1'b0),
.aclr1 (1'b0), .address_b (1'b1), .addressstall_a (1'b0), .addressstall_b (1'b0), .byteena_a (1'b1),
状态栏。
第6章 Verilog HDL仿真技术
这里要注意的是,有些操作是无法通过菜单和工具栏来
完成的,必须使用命令行方式来操作。常用的命令并不多,
不是很难掌握,建议大家参阅相关书籍学习仿真中的一些用 的命令。
第6章 Verilog HDL仿真技术
图6-1 ModelSim界面
第6章 Verilog HDL仿真技术
第6章 Verilog HDL仿真技术
图6-8 设置LPM_COUNTER的位数
第6章 Verilog HDL仿真技术
下面再简单介绍确定图6-2中ROM内的波形数据文件的 过程。 首先在Quartus Ⅱ中打开ROM数据文件编辑窗口,即选 择File—New命令,并在New窗口中选择Other files选项卡,
第6章 Verilog HDL仿真技术
6.1 ModelSim软件的使用 6.2 延时 6.3 常用块语句 6.4 常用系统函数和系统任务 6.5 端口连接规则 6.6 小结
习题6
第6章 Verilog HDL仿真技术
6.1 ModelSim软件的使用
6.1.1 ModelSim软件简介
ModelSim为HDL仿真工具,支持IEEE常见的各种硬件描
第6章 Verilog HDL仿真技术
本章为ModelSim的初级教程,读者学完本章可以较为 熟练地使用ModelSim进行设计仿真,本章没有也不可能涉 及ModelSim的各个方面,要想全面地掌握ModelSim,可以 参阅ModelSim附带的文档。
第6章 Verilog HDL仿真技术
这里以ModelSim SE PLUS 6.1b为例来说明。本节主要 说明ModelSim的菜单和工具栏,读者对此有一个初步的了 解就可以了。点击“开始—程序—ModelSim SE PLUS 6.1b—ModelSim”或双击桌面上的快捷方式,打开ModelSim
第6章 Verilog HDL仿真技术
图6-5 选择rom_64X8模块的数据线和地址线宽度
第6章 Verilog HDL仿真技术
在图6-5中作图示选择,然后点击Next按钮,进入图6-6。
图6-6 选择rom_64X8模块的地址锁存信号inclock
第6章 Verilog HDL仿真技术
在图6-6中作图示选择,然后点击Next按钮,进入图6-7。
第6章 Verilog HDL仿真技术
图6-9 顶层设计中ROM的初始化内容
第6章 Verilog HDL仿真技术
设计模块完成之后,需要设计激励模块对该正弦信号发 生器进行测试,一个可使用的测试激励模块如例6-4所示。 【例6-4】 sin_wave模块的测试块。 `timescale 1ns/100ps
第6章 Verilog HDL仿真技术
.eq (),
.sclr (1'b0),
.sload (1'b0), .sset (1'b0), .updown (1'b1)); defparam lpm_counter_component.lpm_direction = "UP",
第6章 Verilog HDL仿真技术
altsyncram_component.width_byteena_a = 1;
endmodule
第6章 Verilog HDL仿真技术
例6-1至例6-3程序说明:
(1) 例6-1为sin_wave顶层设计,调用了底层模块
counter_64和rom_64X8,模块间的连接关系如图6-2所示。
(2) 模块counter_64和rom_64X8的实现过程中,分别调
软件,出现的界面如图6-1所示。在图的最上端为标题栏;
下面一行为菜单栏;再下面为工具栏;左半部分为工作区 (Workspace),在其中可以通过双击查看当前的工程及对库
进行管理;右半部分为信息显示区,用于显示和编辑文件、
显示仿真波形以及其他信息;下面为命令窗口区,在其中出 现的命令行及提示信息称为脚本(Transcript);最下面一行为
该设计的顶层文件sin_wave以及底层文件counter_64和 rom_64X8的设计源码分别参见例6-1~例6-3。 【例6-1】 顶层设计sin_wave的Verilog HDL代码。 module sin_wave(clk,data); input output wire counter_64 clk; [7:0] data; [5:0] WIRE0; inst1(.clock(clk),.q(WIRE0));
第6章 Verilog HDL仿真技术
图6-3 定制新的宏功能模块
第6章 Verilog HDL仿真技术
在图6-3中作图示选择,然后点击Next按钮,进入图6-4。
图6-4 LPM_ROM宏功能模块设定
第6章 Verilog HDL仿真技术
在图6-4中作图示选择,并对定制模块命名后,点击
Next按钮,进入图6-5。
用了Quartus Ⅱ自带的宏功能模块lpm_counter和altsyncram。
宏功能模块的定制可使用MegaWizard Plug-in Manager…向
导创建完成。
第6章 Verilog HDL仿真技术
下面以rom_64X8为例,介绍宏功能模块的定制步骤。 首先,打开MegaWizard Plug-in Manager初始对话框。 选择Tools—MegaWizard Plug-in Manager…,打开如图6-3所 示的对话框。
1. 设计块与激励块
本设计是完成一个正弦波信号发生器。正弦波信号发生
器的结构如图6-2所示。在每一个时钟上升沿使ROM当前地 址的数据输出,同时计数器增1,这对于ROM来说就是指向 下一个存放数据的地址。
第6章 Verilog HDL仿真技术
图6-2 顶层设计sin_wave框图
第6章 Verilog HDL仿真技术
第6章 Verilog HDL仿真技术
.byteena_b (1'b1), .clock1 (1'b1), .clocken0 (1'b1), .clocken1 (1'b1),
.data_a ({8{1'b1}}),
.data_b (1'b1), .q_b (), .rden_b (1'b1), .wren_a (1'b0), .wren_b (1'b0));
第6章 Verilog HDL仿真技术
altsyncram_component.operation_mode = "ROM",
altsyncram_component.outdata_aclr_a = "NONE",
altsyncram_component.outdata_reg_a = "UNREGISTERED", altsyncram_component.widthad_a = 6, altsyncram_component.width_a = 8,
再选择Memory Initialization File选项,单击OK按钮后产生
ROM数据文件大小选择窗口,在Number of Words中填写64, 在Word size中填写8。单击OK按钮,将出现如图6-9所示的
空的mif数据表格,然后按图6-9中的数值将表格填写完整。
完成后选择File—Save命令,保存此数据文件,取名为 sin_rom_64.mif。
【例6-3】 底层rom_64X8模块的Verilog HDL代码。
module rom_64X8 (address,inclock,q);
input input output [7:0] q; wire [7:0] sub_wire0; wire [7:0] q = sub_wire0[7:0]; [5:0] address; inclock;
述语言标准。我们可以利用该软件来实现对所设计的Verilog HDL程序的仿真。ModelSim常见的版本分为ModelSim AE、
ModelSim XE和ModelSim SE三种。ModelSim的版本更新得
很快,本章使用的版本为ModelSim 6.1 SE版本,该版本支持 Verilog HDL的2001标准。
module test_module1;
reg clk; wire[7:0] data;
//调用已设计好的模块
sin_wave one(.clk(clk),.data(data)); initial
rom_64X8 inst2(.inclock(clk),.address(WIRE0),.q(data)); endmodule
第6章 Verilog HDL仿真技术
【例6-2】 底层counter_64模块的Verilog HDL代码。
module counter_64 (clock,q);
input clock;
6.1.2 使用图形界面对设计进行仿真
作为一种简单易用、功能强大的逻辑仿真工具,
ModelSim的应用广泛。本小节结合Quartus Ⅱ软件,通过一 个简单的例子对ModelSim作一个入门性的简单介绍,首先 介绍ModelSim的功能仿真,然后介绍时序仿真。
第6章 Verilog HDL仿真技术
图6-7 选择rom_64X8模块的数据初始化文件
第6章 Verilog HDL仿真技术
在图6-7中选择存储器初始化文(关于存储器初始化文
件的创建方法随后在本小节介绍),然后点击Next按钮,进
入下一个界面。在后面的page 6 of 7界面点选Next按钮,在 page 7 of 7界面点选Finish按钮,完成ROM的定制。 LPM_COUNTER宏功能模块的定制步骤同LPM_ROM, 在LPM_COUNTER宏功能模块的定制步骤中,将模块名命 名为counter_64,然后需要修改计数器输出的位数为6,见图 6-8,其余步骤均取默认值即可。
output [5:0] q;
wire [5:0] sub_wire0; wire [5:0] q = sub_wire0[5:0];
第6章 Verilog HDL仿真技术
lpm_counter lpm_counter_component ( .clock (clock), .q (sub_wire0), .aclr (1'b0), .aload (1'b0), .aset (1'b0), .cin (1'b1), .clk_en (1'b1), .cnt_en (1'b1), .cout (), .data ({6{1'b0}}),
第6章 Verilog HDL仿真技术
defparam altsyncram_component.address_aclr_a = "NONE", altsyncram_component.init_file = "sin_rom_64.mif", altsyncram_component.intended_device_family = "Cyclone", altsyncram_component.lpm_hint = "ENABLE_RUNTIME_MOD=YES, INSTANCE_NAME=SIN", altsyncram_component.lpm_type = "altsyncram", altsyncram_component.numwords_a = 64,
相关文档
最新文档