- 1、本文档共52页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
硬件描述语言与FPGA技术实验指导书(2012版).doc
《硬件描述语言与FPGA技术》 实验指导书
西北工业大学 2012/10/10
目录
实验一 简单的组合逻辑设计 3
实验二 简单分频时序逻辑电路的设计 5
实验三 利用条件语句实现计数分频时序电路 8
实验四 阻塞赋值与非阻塞赋值的区别 11
实验五 用always块实现较复杂的组合逻辑电路 15
实验六 在Verilog中使用函数 19
实验七 在Verilog HDL中使用任务(task) 22
实验八 利用有限状态机进行时序逻辑的设计 26
实验九 利用状态机实现比较复杂的接口设计 32
练习十 利用SRAM设计一个FIFO 39
实验一 简单的组合逻辑设计
一、实验目的
1. 学习Quartus和ModSim两种EDA工具的使用方法;
2.掌握基本组合逻辑电路的实现方法;
3.初步了解两种基本组合逻辑电路的生成方法;
4.学习测试模块的编写;
5.通过综合和布局布线了解不同层次仿真的物理意义。
二、实验内容
本次实验采用Verilog HDL语言设计一个可综合的数据比较器,其功能是比较数据a与数据b的结果,如果两个数据相同,则输出结果1,否则给出结果0;并写出测试模型,使其进行比较全面的测试。
三、实验仪器、设备
预装了开发工具ModelSimSE、synplify的PC机。
四、实验原理
组合逻辑电路是指在任何时刻,输出状态只决定于同一时刻各输入状态的组合而与电路以前状态无关,而与其他时间的状态无关。其逻辑函数如下:
Li=f(A1,A2,A3……An) (i=1,2,3…m)
其中,A1An为输入变量,Li为输出变量。
组合逻辑电路的特点归纳如下:
① 输入、输出之间没有返馈延迟通道;
② 电路中无记忆单元。
组合逻辑设计示例:可综合的数据比较器。它的功能是比较数据a与数据b,如果两个数据相同,则给出结果1,否则给出结果0。描述组合逻辑时常使用assign结构。注意equal=(a==b)?1:0,这是一种在组合逻辑实现分支判断时常使用的格式。
//--------------- compare.v -----------------
module compare(equal,a,b);
input a,b;
output equal;
assign equal=(a==b)?1:0; //a等于b时,equal输出为1;a不等于b时,
//equal输出为0。
endmodule
测试模块源代码:
`timescale 1ns/1ns
`include ./compare.v
module comparetest;
reg a,b;
wire equal;
initial
begin
a=0;
b=0;
#100 a=0; b=1;
#100 a=1; b=1;
#100 a=1; b=0;
#100 $stop;
end
compare compare1(.equal(equal),.a(a),.b(b));
endmodule
仿真波形如下:
五、实验步骤
1.
2.
3.
4. 综合时采用不同的FPGA器件,观察综合后的结果有什么不同。
六、实验报告要求
1.
2.
3.
4. 对课后思考题进行分析说明。
七、实验注意事项
1.
2.
3.
八、思考题
1.2..
实验二 简单分频时序逻辑电路的设计
一、实验目的
1.
2. 掌握verilog语句在简单时序模块设计中的使用;
3.
4.
二、实验内容
1.
2.
三、实验仪器、设备
预装了开发工具synplify、ModelSimSE的PC机。
四、实验原理
1.使用always过程赋值语句对上升沿进行响应,当时钟信号上升沿到来时,系统判断清零信号是否为0,如果为0,则clk_out信号清零,否则clk_out信号翻转clk_out=~clk_out。
2.系统1/2分频原理:一个时钟周期的上升沿时刻,若清零信号reset不为0,输出信号跳变一个周期,输入时钟信号需经过两个周期的上升沿,输出周期为输入周期的两倍,输出频率为输入频率的1/2,这样就完成了1/2分频的效果。
下面是一个可综合的1/2分频器模型
//half_clk.v---------------------------------------
module half_clk(reset,clk_in,clk_out);
input clk_in,reset;
output clk_out;
reg clk_out;
always @(posedge clk_in)
begin
if
文档评论(0)