实验一 一位全加器编译与仿真
一、实验前准备
在进行本实验前,请认真学习教材《数字系统设计与Verilog HDL》前三章的有关内容,了解Quartus Ⅱ的开发环境以及仿真验证流程。掌握1位全加器的原理电路。
二、实验目的
1、熟悉了解Quartus Ⅱ的运行环境。
2、掌握Quartus Ⅱ环境下的仿真验证流程。 3、了解数字电路集成设计的过程。
三、实验原理与实验内容
本次实验主要目的为让学生熟悉软件环境与开发流程,实验的基本原理以及内容详见教材第56页至65页。
四、实验要求
要求按照教材内容进行实验,最后得出与教材相同的仿真结果。
实验二 简单组合逻辑电路的设计
一、实验目的
1、熟悉verilog HDL语言的语法结构。 2、学会用Verilog HDL描述简单的电路。
二、实验原理与内容
这是一个可综合的数据比较器,很容易看出它的功能是比较数据a与数据b,如果两个数据相同,则给出结果1,否则给出结果0。在Verilog HDL中,描述组合逻辑时常使用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 //定义时间单位。 module comparetest; reg a,b; wire equal;
initial //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、用verilog HDL语言描写出简单的一位数据比较器及其测试程序; 2、用测试程序对比较器进行波形仿真测试; 3、得到仿真波形;
实验三 时序逻辑电路的设计
一、实验目的
1、理解计数器的概念。
2、掌握器件的Verilog HDL的语言程序设计方法。
二、实验原理
计数器是最常见的寄存器逻辑电路,从微处理器的地址发生器到频率计都需要用到计数器。一般计数器可以分为两类:加法计数器和减法计数器。加法计数器每来一个脉冲计数值加1;减法计数器每来一个脉冲计数器值减1;有时将两者做在一起称可逆计数器。计数器也分为自由计数器和可预置计数器。有的计数器只有简单复位控制端,称自由计数器;有的计数器可以预置计数初值,称可预置计数器。 下面将用Verilog HDL 语言设计一个带异步同步清零的二进制加法计数器。计数器采用,有一个时钟输入端CLK,每个时钟上升沿,计数器工作。一个同步清零端CLR,CLR=1 时,清零。一个使能端ENA,ENA=1 时计数,ENA=0 时保持。二进制输出为Q3、Q2、Q1、Q0,一位进位输出信号OUTQ。当计数输出端Q3Q2Q1Q0=1111 时,OUTY=1。
三、实验内容及步骤
编程实现二进制计数器并仿真。 按实验原理要求编写一个二进制计数器,并仿真。
Verilog HDL 源文件如下(counter.v):
module counter (count, clk, reset); output [3:0] count; input clk, reset; reg [3:0] count;
always @ (posedge clk or posedge reset) if (!reset)
count = 4'h00; else
count <= count + 4'h01; endmodule
在QuartusII下完成仿真,其仿真波形应如下图所示。
四、实验要求
按照实验内容及步骤完成实验并得到仿真波形。
实验四 有限状态机实验:“101”序列检测器仿真
一、 实验目的
1.对有限状态机(FSM)做初步了解。
2.熟悉用有限状态机实现“101”序列检测器的功能。 二、实验内容
1.Gray编码的“101”序列检测器仿真实验。 2.获取仿真波形图。 3.分析所实现的功能。
三、实验内容与实验步骤
“101”序列检测器就是在收到“101”序列后输出一个标示1,否则输出标示0.
单过程描述:在单过程描述方式中,将状态机的现态、次态和输出逻辑(CS+NS+OL)放在一个always过程中进行描述。
“101”序列检测器的状态转移图
例1 用Gray编码单过程描述的“101”序列检测器:
源程序:
module fsm4_seq101(clk,clr,x,z);
input clk,clr,x; output reg z; reg[1:0] state; parameter S0=2'b00,S1=2'b01,S2=2'b11,S3=2'b10; /*状态编码,采用格雷(Gray)编码方式*/ always @(posedge clk or posedge clr)
Begin if(clr) state<=S0; //异步复位,s0为起始状态 else case(state)
S0:begin if(x) begin state<=S1; z=1'b0;end
else begin state<=S0; z=1'b0;end end
S1:begin if(x) begin state<=S1; z=1'b0;end else begin state<=S2; z=1'b0;end end
S2:begin if(x) begin state<=S3; z=1'b0;end else begin state<=S0; z=1'b0;end end
S3:begin if(x) begin state<=S1; z=1'b1;end else begin state<=S2; z=1'b1;end end
default:begin state<=S0; z=1'b0;end /*default语句*/ endcase end
endmodule
四、实验要求
1、在Quartus II环境下进行时序仿真。
2、获取仿真波形图,分析其所实现的功能,写出实验报告。
百度搜索“77cn”或“免费范文网”即可找到本站免费阅读全部范文。收藏本站方便下次阅读,免费范文网,提供经典小说综合文库数字系统设计与Verilog HDL——实验指导(LYT)在线全文阅读。
相关推荐: