文档视界 最新最全的文档下载
当前位置:文档视界 › verilog hdl实验报告

verilog hdl实验报告

verilog hdl实验报告

《Verilog HDL实验报告》

Verilog HDL(硬件描述语言)是一种用于描述电子系统的硬件的语言,它被广泛应用于数字电路设计和硬件描述。本实验报告将介绍Verilog HDL的基本概念和使用方法,并通过实验展示其在数字电路设计中的应用。

实验目的:

1. 了解Verilog HDL的基本语法和结构

2. 掌握Verilog HDL的模块化设计方法

3. 熟悉Verilog HDL的仿真和综合工具的使用

实验内容:

1. Verilog HDL的基本语法和结构

Verilog HDL是一种硬件描述语言,其语法和结构类似于C语言。它包括模块定义、端口声明、信号赋值等基本元素。在本实验中,我们将学习如何定义Verilog模块,并使用端口声明和信号赋值描述数字电路的行为。

2. Verilog HDL的模块化设计方法

Verilog HDL支持模块化设计,可以将复杂的电路分解为多个模块,每个模块描述一个子电路的行为。在本实验中,我们将学习如何设计和实现Verilog模块,并将多个模块组合成一个完整的数字电路。

3. Verilog HDL的仿真和综合工具的使用

Verilog HDL可以通过仿真工具进行功能验证,也可以通过综合工具生成实际的硬件电路。在本实验中,我们将使用Verilog仿真工具对设计的数字电路进行功能验证,并使用综合工具生成对应的硬件电路。

实验步骤:

1. 学习Verilog HDL的基本语法和结构

2. 设计一个简单的数字电路,并实现Verilog模块描述其行为

3. 使用仿真工具对设计的数字电路进行功能验证

4. 使用综合工具生成对应的硬件电路

实验结果:

通过本实验,我们学习了Verilog HDL的基本概念和使用方法,并成功设计和实现了一个简单的数字电路。我们使用仿真工具对设计的数字电路进行了功能验证,并使用综合工具生成了对应的硬件电路。实验结果表明,Verilog HDL在数字电路设计中具有重要的应用价值。

结论:

Verilog HDL是一种强大的硬件描述语言,它可以帮助工程师们更好地描述和设计数字电路。通过本实验,我们对Verilog HDL有了更深入的理解,并掌握了其在数字电路设计中的应用方法。希望通过本实验报告的学习,读者们能够更好地掌握Verilog HDL的使用技巧,为自己的数字电路设计工作提供更多的帮助和支持。

Verilog HDL 实验串行数据检测

Verilog HDL 实验报告(六) 系部名称:通信工程 专业名称:通信工程 班级: 班内序号: 学生姓名:

实验内容:串行数据检测一设计模块 源代码: module check(clk,rst,in,out); input clk,rst; input in; output out; reg [3:0] state; reg out; parameter idle=3'b000, state1=3'b001, state2=3'b010, state3=3'b011, state4=3'b100, state5=3'b101, state6=3'b110, state7=3'b111; always @(posedge clk or negedge rst) if (!rst) begin

state<=idle; end else case (state) idle: if (in==1'b0) state<=state1; else state<=idle; state1: if (in==1'b1) state<=state2; else state<=state1; state2: if (in==1'b1) state<=state3; else state<=state1; state3: if (in==1'b0) state<=state4; else state<=idle; state4: if (in==1'b1) state<=state5; else state<=state1; state5: if (in==1'b0) state<=state6; else state<=state3;

verilog实验报告

verilog实验报告 Verilog实验报告 引言: Verilog是一种硬件描述语言(HDL),用于设计和模拟数字电路。它是一种高 级语言,能够描述电路的行为和结构,方便工程师进行数字电路设计和验证。 本实验报告将介绍我在学习Verilog过程中进行的实验内容和所获得的结果。 实验一:基本门电路设计 在这个实验中,我使用Verilog设计了基本的逻辑门电路,包括与门、或门和非门。通过使用Verilog的模块化设计,我能够轻松地创建和组合这些门电路,以实现更复杂的功能。 我首先创建了一个与门电路的模块,定义了输入和输出端口,并使用逻辑运算 符和条件语句实现了与门的功能。然后,我创建了一个测试模块,用于验证与 门的正确性。通过输入不同的组合,我能够验证与门的输出是否符合预期。 接下来,我按照同样的方法设计了或门和非门电路,并进行了相应的测试。通 过这个实验,我不仅学会了使用Verilog进行基本门电路的设计,还加深了对逻辑电路的理解。 实验二:时序电路设计 在这个实验中,我学习了如何使用Verilog设计时序电路,例如寄存器和计数器。时序电路是一种具有状态和时钟输入的电路,能够根据时钟信号的变化来改变 其输出。 我首先设计了一个简单的寄存器模块,使用触发器和组合逻辑电路实现了数据 的存储和传输功能。然后,我创建了一个测试模块,用于验证寄存器的正确性。

通过输入不同的数据和时钟信号,我能够观察到寄存器的输出是否正确。 接下来,我设计了一个计数器模块,使用寄存器和加法电路实现了计数功能。 我还添加了一个复位输入,用于将计数器的值重置为初始状态。通过测试模块,我能够验证计数器在不同的时钟周期内是否正确地进行计数。 通过这个实验,我不仅学会了使用Verilog设计时序电路,还加深了对触发器、寄存器和计数器的理解。 实验三:组合电路设计 在这个实验中,我学习了如何使用Verilog设计组合电路,例如多路选择器和加法器。组合电路是一种没有状态和时钟输入的电路,其输出只取决于当前的输入。 我首先设计了一个多路选择器模块,使用条件语句和逻辑运算符实现了多个输 入和一个选择信号之间的映射关系。然后,我创建了一个测试模块,用于验证 多路选择器的正确性。通过输入不同的数据和选择信号,我能够观察到多路选 择器的输出是否符合预期。 接下来,我设计了一个加法器模块,使用逻辑运算符和进位电路实现了两个二 进制数的相加功能。我还添加了一个溢出输出,用于指示是否发生了溢出。通 过测试模块,我能够验证加法器在不同的输入情况下是否正确地进行相加。 通过这个实验,我不仅学会了使用Verilog设计组合电路,还加深了对多路选择器和加法器的理解。 结论: 通过这些实验,我学会了使用Verilog进行数字电路的设计和模拟。Verilog作 为一种硬件描述语言,能够帮助工程师更轻松地进行数字电路的设计和验证。

verilog hdl实验报告

verilog hdl实验报告 《Verilog HDL实验报告》 Verilog HDL(硬件描述语言)是一种用于描述电子系统的硬件的语言,它被广泛应用于数字电路设计和硬件描述。本实验报告将介绍Verilog HDL的基本概念和使用方法,并通过实验展示其在数字电路设计中的应用。 实验目的: 1. 了解Verilog HDL的基本语法和结构 2. 掌握Verilog HDL的模块化设计方法 3. 熟悉Verilog HDL的仿真和综合工具的使用 实验内容: 1. Verilog HDL的基本语法和结构 Verilog HDL是一种硬件描述语言,其语法和结构类似于C语言。它包括模块定义、端口声明、信号赋值等基本元素。在本实验中,我们将学习如何定义Verilog模块,并使用端口声明和信号赋值描述数字电路的行为。 2. Verilog HDL的模块化设计方法 Verilog HDL支持模块化设计,可以将复杂的电路分解为多个模块,每个模块描述一个子电路的行为。在本实验中,我们将学习如何设计和实现Verilog模块,并将多个模块组合成一个完整的数字电路。 3. Verilog HDL的仿真和综合工具的使用 Verilog HDL可以通过仿真工具进行功能验证,也可以通过综合工具生成实际的硬件电路。在本实验中,我们将使用Verilog仿真工具对设计的数字电路进行功能验证,并使用综合工具生成对应的硬件电路。

实验步骤: 1. 学习Verilog HDL的基本语法和结构 2. 设计一个简单的数字电路,并实现Verilog模块描述其行为 3. 使用仿真工具对设计的数字电路进行功能验证 4. 使用综合工具生成对应的硬件电路 实验结果: 通过本实验,我们学习了Verilog HDL的基本概念和使用方法,并成功设计和实现了一个简单的数字电路。我们使用仿真工具对设计的数字电路进行了功能验证,并使用综合工具生成了对应的硬件电路。实验结果表明,Verilog HDL在数字电路设计中具有重要的应用价值。 结论: Verilog HDL是一种强大的硬件描述语言,它可以帮助工程师们更好地描述和设计数字电路。通过本实验,我们对Verilog HDL有了更深入的理解,并掌握了其在数字电路设计中的应用方法。希望通过本实验报告的学习,读者们能够更好地掌握Verilog HDL的使用技巧,为自己的数字电路设计工作提供更多的帮助和支持。

FPGA实验报告实验

西南科技大学 实验报告 课程名称:基于FPGA的现代数字系统设计 实验名称:基于HDL十进制计数、显示系统设计姓名: 学号: 班级:通信1301 指导教师:刘桂华

西南科技大学信息工程学院制

基于HDL十进制计数、显示系统设计 一、实验目的 1、掌握基于语言的ISE 设计全流程; 2、熟悉、应用VerilogHDL描述数字电路; 3、掌握基于Verilog的组合和时序逻辑电路的设计方法; 4、掌握chipscope 片内逻辑分析仪的使用与调试方法。 二、实验原理 1、实验内容:设计具有异步复位、同步使能的十进制计数器,其计数结 果可以通过七段数码管、发光二极管等进行显示。 2、模块端口信号说明: 输入信号: Clk_50m ---系统采样时钟 clk -------待计数的时钟 clr ---------异步清零信号,当clr=0,输出复位为0,当clr=1, 正常计数 ena---------使能控制信号,当ena=1,电路正常累加计数,否

则电路不工作 输出信号: q[6:0]---------驱动数码管,显示计数值的个位 cout -----------1bit 数据,显示计数值向十位的进位 COM-----------共阳级数码管,公共端(接地,参考开发板原理 图 3、以自顶向下的设计思路进行模块划分: 整个系统主要设计的模块是:十进制计数模块和数码管驱动模块,由于实验板的按键为实现硬件防抖,则需要将按键输入的时钟clk,先通过消抖模块消抖后,再输出至后续使用。 1)十进制计数器模块设计 输入: CLK -------待计数的时钟 CLR ---------异步清零信号,当CLR =0,输出复位为0,当CLR =1,正常计数。 EN---------使能控制信号,当EN=1,电路正常累加计数,否则电路不工作

FPGA——Verilog时序电路实验报告

Verilog 设 计 实 验 报 告 唐睿电子工程2011301200062

武汉大学电工电子实验教学示范中心 集成电路设计实验实验报告 :学院:电子信息学院专业:电子信息工程2014 年 5 月7 日 实验名称时序逻辑电路基础指导教师曹华伟姓名唐睿年级2011级学号2011301200062 成绩 一、预习部分 1.实验目的(预期成果) 2.实验基本原理(概要) 3.主要仪器设备(实验条件,含必要的元器件、工具) 1).实验目的 1.掌握时序逻辑电路的实现方法; 2.了解时序电路的仿真与测试; 3.熟悉并理解硬件描述语言; 4.用硬件描述语言实现基本时序电路基础的电路; 5.在DE2-115开发板中验证并测试其时序逻辑电路功能是否实现。 2).实验基本原理 1. D触发器工作原理:SD 和RD 接至基本RS 触发器的输入端,它们分别是预置和 清零端,低电平有效。当SD=1且RD=0时(SD的非为0,RD的非为1,即在两个控制端口分别从外部输入的电平值,原因是低电平有效),不论输入端D为何种状态,都会使Q=1,Q非=0,即触发器置1;当SD=0且RD=1(SD的非为1,RD的非为0)时,Q=0,Q非=1,触发器置0,SD和RD通常又称为直接置1和置0端。我们设它们均已加入了高电平,不影响电路的工作。 2. 时序逻辑电路(Sequential Logic Circuit)输出不仅取决于当前输入信号,而且取决于 电路之前所处的状态。基本的时序电路单元有触发器(D、JK、T 等触发器)、锁存器、计数器等。 3. VHDL 中,主要程序分析,时序电路通过process(clk)和if clk’event and clk = ‘1’ then 边沿检测语句实现触发器风格的电路;具有非完分支的if、case 语句形成锁存器电路。例如: process(clk)begin ――D 触发器 if (clk’event and clk = ‘1’) then

Verilog实验报告

一、8位数字显示的简易频率计设计 要求: ①能够测试10Hz~10MHz方波信号; ②电路输入的基准时钟为1Hz,要求测量值以8421BCD码形式输出; ③系统有复位键; ④采用分层次分模块的方法,用Verilog HDL进行设计。 ⑤写出测试仿真程序 1.设计原理 频率计的原理即测量给定信号每秒钟脉冲个数,则系统时钟宽度应为2s,通过分频模块将基准时钟进行二分频实现;当系统时钟高电平时计数模块开始计数,低电平时清零;之后将结果存入锁存模块使其稳定显示。 2.设计方案 该频率计由分频模块,计数模块,锁存模块和顶层模块构成,其中: 1)分频模块(FC_div):由于基准时钟(clk_d)频率为1Hz,高电平宽度为0.5s,因此通过一个二分频模块得到一个频率为0.5Hz,高电平宽度为1s的时钟(clk_out),并作为计频器的系统时钟。 2)计数模块(FC_counter):频率计核心模块,在接入的系统时钟(clk_c)处于高电平时对输入信号(freq_in)的上升沿进行计数,从而测得输入信号的频率。由于要把测量值以8421BCD码输出,且量程上限为10MHz。因此程序内采用8个4位寄存器分别从低到高地按位存储测量值,最后再按位排列输出一个32位的BCD 码序列(CT)。 3)锁存模块(FC_latch):将计数模块输出的结果存储以稳定显示。 4)顶层模块(FC_top):将各模块连接实现计频器。 3.程序代码 1)分频模块 module FC_div(clk_d,rst_d,clk_out); input clk_d,rst_d; output clk_out; reg clk_out; always@(posedge clk_d or negedge rst_d) begin if(rst_d==0) clk_out<=0; else clk_out<=~clk_out; end endmodule 2)计数模块 module FC_counter(clk_c,freq_in,CT); input clk_c; input freq_in; output [31:0] CT;

八选一数据选择器和四位数据比较器verilog实验报告

八选一数据选择器和四位数据比较器verilog实验报告实验报告:八选一数据选择器和四位数据比较器 一、引言 数据选择器和数据比较器是数字电路中常用的基本电路模块,它们在 许多数字系统中起着重要的作用。本实验通过使用Verilog语言,设计并 实现了八选一数据选择器和四位数据比较器电路。本实验报告将分别介绍 这两个电路的设计原理、实验过程以及实验结果。 二、八选一数据选择器的设计 1.设计原理 八选一数据选择器是一种多路选择器,根据控制信号来选择其中一个 输入信号输出。其输入端包括8个数据输入信号(D0-D7)、3个控制信 号(S2、S1、S0)以及一个使能信号(EN),输出端为一个数据输出信号(Y)。当使能信号为高电平时,根据控制信号的值,将对应的输入信号 输出。 2.设计过程 本实验中,我们使用Verilog语言进行八选一数据选择器的设计。首先,我们声明输入输出端口: module mux8to1(input [7:0] D, input [2:0] S, input EN, output reg Y); 然后,我们使用case语句来实现根据控制信号选择输出信号的功能:begin

if (EN) case (S) 3'b000:Y=D[0]; 3'b001:Y=D[1]; 3'b010:Y=D[2]; 3'b011:Y=D[3]; 3'b100:Y=D[4]; 3'b101:Y=D[5]; 3'b110:Y=D[6]; 3'b111:Y=D[7]; default: Y = 1'bx; endcase else Y = 1'bx; end 最后,我们将设计的模块实例化并进行仿真和综合验证。 三、四位数据比较器的设计 1.设计原理

数字系统设计与Verilog HDL实验报告(一)

《数字系统设计与Verilog HDL》 实验报告(一) 班级:自动1003班 姓名:** 学号:********

实验一、ModelSim认识及四位比较器 一、实验目的 1、了解及掌握ModelSim软件的基本功能; 2、通过ModelSim软件编写基本的程序进行仿真和调试。 二、实验内容 1、熟悉ModelSim软件中各部分的功能及用法; 2、编写一个四位比较器设计程序以及测试该模块的测试程 序,要求如下: (1)输入两个四位二进制数a、b; (2)若ab,则输出LA_out=1,EQ_out=0,LE_out=0; 三、实验步骤及源程序 新建工程及文件,分别添加设计程序及测试程序,进行编译及纠错,编译通过后运行程序仿真进行调试得出结果。 设计模块: module compare4(LA_out,EQ_out,LE_out,a,b,LA_in,EQ_in,LE_in); output LA_out,EQ_out,LE_out; input [3:0] a,b; input LA_in,EQ_in,LE_in; reg LA_out,EQ_out,LE_out; always @(b) begin if(a>b) begin LA_out=1'b1;

EQ_out=1'b0; LE_out=1'b0; end else if(a

verlog实验报告

Verilog实验报告 1. 引言 本实验旨在通过使用Verilog硬件描述语言来实现一个简单的电路设计。Verilog是一种用于描述电路行为和结构的编程语言,可以用于设计和仿真数字电路。本实验将通过逐步的思考过程,详细说明实验的设计和实现。 2. 设计思路 首先,我们需要确定电路的功能和需要实现的功能。在这个例子中,我们将设计一个简单的4位加法器电路。 接下来,我们需要创建一个顶层模块,该模块将包含所需的输入和输出端口,并将其他模块连接在一起。我们可以使用以下代码创建一个顶层模块: module top_module(input [3:0] a, input [3:0] b, output [3:0] sum); // 端口声明 // 内部逻辑实现 endmodule 然后,我们可以创建一个子模块,该模块将执行实际的加法操作。我们可以使用以下代码创建一个加法器模块: module adder(input [3:0] a, input [3:0] b, output [3:0] sum); // 加法操作实现 endmodule 在加法器模块中,我们可以使用位级操作符+来执行实际的加法运算。我们可以使用以下代码实现加法操作: assign sum = a + b; 最后,我们将在顶层模块中实例化加法器模块,并将输入和输出端口连接在一起。我们可以使用以下代码实现实例化和连接: adder adder_instance(.a(a), .b(b), .sum(sum)); 3. 实验结果 在完成上述步骤后,我们可以编译和仿真我们的Verilog代码。可以使用常见的Verilog仿真器(如ModelSim)来进行仿真。

verilog汉字滚动显示实验报告

数字系统设计 实验报告 实验06:汉字滚动显示 实验地点:理工楼703 实验时间:2011年05月20日

实验六汉字滚动显示 一、实验目的 1)用8×8点阵显示屏滚动显示至少4个汉字; 2)可以用拨码开关控制左、右滚动显示。 二、实验原理 汉字滚动显示原理为依次对多汉字抽取像素信息,并按序排队存放于ROM 之中,便可得到一个待显示数据序列。进一步通过寻址的方法来控制该数据序列的释放过程,就可实现在8×8 LED 发光二极管点阵上滚动显示多汉字信息的目的。下图给出的就是实现滚动显示多汉字信息的原理示意图。 由图可知,某一时刻能在显示数据序列中定位待显示数据的地址指针可用下式计算:addr=n+m。显然,n的取值范围应为0~N,并由它控制汉字显示的滚动速度;m的取值范围应为0~7,并由它决定LED点阵的开关的扫描速度。因此,控制n扫遍全部待显示数据的时间,可调节汉字信息的滚动速度;改变m 的重复扫描周期,可改善在LED点阵上显示完整汉字信息的稳定性。由此可见,要实现汉字向左滚动,则汉字信息定位指针依次加1,如果实现汉字向右滚动,则依次减1。 三、实验步骤 1)根据实验要求作预习报告。 2)根据实验需求,进行程序的设计。 3)根据以前设计的经验,反复调试程序。 4)调试通过,下载到FPGA开发板上进行实践调试。 5)完成整个过程,写实验报告。 实验程序: dispword(clk,tl,tr,dg,ds); module

reg[7:0] b1[31:0],b2[31:0],b3[31:0],b 4[31:0],b5[31:0],b6[31:0],b7 [31:0],b8[31:0]; reg[31:0] a1,a2,a3,a4,a5,a6,a7,a8; reg f1,f2; input tl,tr,clk; output [0:7] dg,ds; integer a_temp; integer b_temp,k,k1,i; reg [0:7] dg,ds; always@(posedge clk) begin if(a_temp==9999) begin f1=~f1; a_temp<=0; end else a_temp<=a_temp+1; end always@(posedge clk) begin if(b_temp==9999999) begin f2=~f2; b_temp<=0; end else b_temp<=b_temp+1; end ***汉字初始化与经过移动后的汉字赋值*** always@(posedge clk) begin a1[31:0]=32'b1111_1111 _1111_1111_0010_0000_00 00_1000; a2[31:0]=32'b0000_1000 _0000_1000_0100_0000_0 000_1000; a3[31:0]=32'b0000_1000 _0000_1000_1111_1111_00 00_1000; a4[31:0]=32'b1111_1111 _1111_1111_1011_1101_00 00_1000; a5[31:0]=32'b0001_0000 _0001_0000_1010_0101_0 000_1111; a6[31:0]=32'b0010_0100 _0010_0100_1011_1101_0 000_1000; a7[31:0]=32'b0100_0010 _0100_0010_1000_0101_0 000_1000; a8[31:0]=32'b1000_0001_1

1100序列信号发生器的VerilogHDL语言设计实验报告

1100序列信号发生器的VerilogHDL语言设计实验报 告 一、实验目的 1、设计一个序列信号发生器,可以在时钟的作用下周期性的产生1110010序列信号 2、学习时序电路的设计方法; 3、掌握产生周期性信号电路的设计方法; 4、掌握同步和异步概念; 5、掌握仿真的目的和作用; 二、实验环境 QuartusII 、PC机、GW-PK2 EDA实验箱 三、实验原理 给出原理图,说明行为描述方式设计序列信号发生器的原理。 可以产生周期信号的序列信号发生器由计数器和译码器构成。若想产生1110010序列信号,则需要三位二进制计数器,从000记到110,当时钟是上升沿时,若当前记到110,则将计数清为000,再从

头开始,否则计数加1,译码器将每个三位二进制数转换为一位序列信号,计数器和译码器分别由两个进程实现。 四、实验内容及要求 利用QuartusII完成序列信号发生器的VHDL设计及仿真测试,给出仿真波形,进行引脚锁定,并在实验箱上进行硬件验证。 五、实验步骤 (1)用文本方式输入设计文件并存盘 ①创建工程,利用“New Preject Wizard”创建此设计工程。选择菜单“File”“New Preject Wizard”,点击Next,即可弹出工程设置对话框点击此框最上一栏右侧的按钮“…”,设置工程路径,找到文件夹D:\Quartus8\vhdl_code\three,填写工程名和顶层文件名称后,点击Next按钮进行下一步。 ②添加设计源程序。如果已有源程序,可以在此加入到工程中,如果没有点击Next进行下一步。

③选择目标芯片。首先在“Family”栏选芯片系列,在此选“ACEX1K”系列,选择此系列的具体芯片:EP1K30TC144-3。 ④选择仿真器和综合器类型。点击上图的Next按钮,这时弹出 的窗口是选择仿真器和综合器类型的,如果都是选默认的“NONE”,表示都选QuartusII中自带的仿真器和综合器,因此,在此都选默认项“NONE”。

Verilog基本电路设计逻辑仿真实验报告

实验报告 1、基本门电路 一、实验目的 1、了解基于Verilog的基本门电路的设计及其验证。 2、熟悉利用EDA工具进行设计及仿真的流程。 3、学习针对实际门电路芯片74HC00、74HC02、74HC0 4、74HC08、74HC32、74HC86进行VerilogHDL设计的方法。 二、实验环境 Libero仿真软件。 三、实验内容 1、掌握Libero软件的使用方法。 2、进行针对74系列基本门电路的设计,并完成相应的仿真实验。 3、参考教材中相应章节的设计代码、测试平台代码(可自行编程),完成74HC00、74HC02、74HC0 4、74HC08、74HC32、74HC86相应的设计、综合及仿真。 4、提交针对74HC00、74HC02、74HC04、74HC08、74HC32、74HC86 )的综合结果,以及相应的仿真结果。 (任选一个 ....

四、实验结果和数据处理 1、所有 模块及测试平台代码清单.. //74HC00代码-与非 // HC00.v module HC00(A,B,Y); input [4:1]A,B; output [4:1]Y; assign Y=~(A&B); endmodule //74HC00测试平台代码 // test.v `timescale 1ns/1ns module test1(); reg [4:1]a,b; wire [4:1]y; HC00 u1(a,b,y); initial begin a=4'b0000; b=4'b0001; #10 b=b<<1; #10 b=b<<1;

#10 b=b<<1; a=4'b1111; b=4'b0001; #10 b=b<<1; #10 b=b<<1; #10 b=b<<1; end endmodule //74HC02代码-或非 // HC02.v module HC02(A,B,Y); input [4:1]A,B; output [4:1]Y; assign Y=~(A|B); endmodule //74HC02测试平台代码// test.v `timescale 1ns/1ns module test2(); reg [4:1]a,b; wire [4:1]y; HC02 u2(a,b,y);

(完整word版)Verilog数字钟设计实验报告

基于FPGA实现多功能数字钟 ——电子系 071180094 王丛屹 摘要 本文利用Verilog HDL语言自顶向下的设计方法设计多功能数字钟,并通过ISE完成综合、仿真.此程序通过下载到FPGA 芯片后,可应用于实际的数字钟显示中,实现了基本的计时显示和设置,调整时间,闹钟设置的功能. [关键词]FPGA;Verilog HDL;数字钟

一、多功能数字钟的设计 设计一个多功能数字时钟,具有时分、秒计数显示、闹钟功能。能够利用按键实现对闹钟时间的设定并在当前显示时间到时后能够进行闹钟提示.能够利用按键实现“较时”、“较分"功能,随时对数码管的显示进行校正和校对.数字中系统主要由系统时钟,三个功能按键(mode,turn ,change ),FPGA ,数码管和蜂鸣器部分组成。 图: 多功能数字钟总体设计模块 以下就各个模块说明其功能 1. 分频模块

由于FPGA内部提供的时钟信号频率大约为50MHz,在这需要将它转化成1Hz的标准时钟信号供数字钟的计时显示;在此我采用了级联分频法. RTL图如下: 代码如下:

always @(posedge clk_1) if ( cnt2 〈156/2—1)/////////////////////////////////////100分频,生成10000Hz信号begin cnt2 〈= cnt2 + 1; end else begin cnt2 〈= 0; clk_2 <= ~clk_2; end always @(posedge clk_2) if ( cnt5 〈10/2-1) /////////////////////////////////////////10分频,生成1kHz标准信号begin cnt5〈= cnt5 + 1; end else begin cnt5〈= 0; clk_1k〈= ~clk_1k; end always @(posedge clk_2) if ( cnt3 < 100/2—1)//////////////////////////////////////////100分频,生成100Hz信号begin

2022年verilog八位十进制计数器实验报告附源代码

8位10进制计数器实验报告 一、实验目旳 ●学习时序逻辑电路 ●学会用verilog语言设计时序逻辑电路 ●掌握计数器旳电路构造 ●掌握数码管动态扫描显示原理 二、实验内容 实现一种8bit十进制(BCD码)计数器 端口设立: 用拨动开关实现复位和使能 LED灯来表达8位数据 用数码管显示16进制旳八位数据 1.复位时计数值为8‘h0 2.复位后,计数器实现累加操作,步长为1,逢9进1,,计数值达到8‘h99后,从0开 始继续计数 3.使能信号为1时正常计数,为0时暂停计数,为1时可继续计数。 4.每0.5s计数值加1 5.8位旳成果显示在LED灯上,其中LED灯亮表达相应旳位为1,LED灯灭表达相应旳 灯为0 6.用isim进行仿真,用forever语句模拟时钟信号输入,并给变量赋值仿真initial语句。 7.用7段数码管旳后两位显示16进制下8位成果。

三、实验成果 烧写成果: 拨动reset开关到1时,LED灯显示10010000,7段数码管显示“90”。 之后拨动WE开关呢,开始计数,LED开始变化并且7段数码管开始计数。从99后达到00,LED重新开始从00000000开始亮,且数码管重新从00开始计数。 之后拨动WE开关,暂停计数,LED暂停亮灭,七段数码管暂停变化,WE拨回1,继续计数。 拨动复位信号时,忽视WE信号,直接复位。 仿真成果: 当输入reset信号时波形变化如下 当达到一种扫描信号旳周期时旳波形如下

当达到一种以上计数信号旳周期时旳波形 实验分析: 实验总体构造和模块间关系如图所示:(其中还需要补上使能信号) 实验原理: 由于规定实现数码管和LED灯旳显示,先考虑LED灯,可以直接由8位输出信号控制,而数码管需要同步显示两个不同旳数字,需要时分复用,即迅速旳交替显示十位和个位,运用人眼旳视觉暂留来达到同步显示。这样就需要两种不同旳频率信号。一种是每0.5s一次,作为计数信号,用脉冲生成器生成,另一种是1ms一次旳扫描信号,用降频器生成,将计数信号输入计数器来计数,并将计数旳值和扫描信号同步输入扫描显示模块。在扫描显示模块里用一种变量值在0和1间交替来指引选择信号选择数码管旳不位数。交替旳条件是收到扫描信号。7段数码管和LED灯都与计数值旳

Verilog实现流水线CPU实验报告

实验报告 课程名称:__ 数字系统设计实验Ⅱ__指导老师:成绩:_______ 实验名称:流水线MIPS微处理器设计实验类型:____设计型__ __ 一、实验目的和要求(必填)二、实验内容和原理(必填) 三、主要仪器设备(必填)四、操作方法和实验步骤 五、实验数据记录和处理六、实验结果与分析(必填) 七、讨论、心得 一、实验目的 1.了解提高CPU性能的方法。 2.掌握流水线MIPS微处理器的工作原理。 3.理解数据冒险、控制冒险的概念以及流水线冲突的解决方法。 4.掌握流水线MIPS微处理器的测试方法。 二、实验任务 设计一个32位流水线MIPS微处理器,具体要求如下: 1.至少运行下列MIPS32指令。 (1)算术运算指令:ADD、ADDU、SUB、SUBU、ADDI、ADDIU。 (2)逻辑运算指令:AND、OR、NOR、XOR、ANDI、ORI、XORI、SLT、SLTU、SLTI、SLTIU。 (3)移位指令:SLL、SLLV、SRL、SRLV、SRA。 (4)条件分支指令:BEQ、BNE、BGEZ、BGTZ、BLEZ、BLTZ。 (5)无条件跳转指令:J、JR。 (6)数据传送指令:LW、SW。 (7)空指令:NOP。 2.采用5级流水线技术,对数据冒险实现转发或阻塞功能。 3.在XUP Virtex-Ⅱ Pro 开发系统中实现MIPS微处理器,要求CPU的运行速度大于 25MHz。 三、实验原理 1.总体设计 流水线是数字系统中一种提高系统稳定性和工作速度的方法,广泛应用于高档CPU的架构中。根据MIPS处理器的特点,将整体的处理过程分为取指令(IF)、指令译码(ID)、执行(EX)、存储器访问(MEM)和寄存器会写(WB)五级,对应多周期的五个处理阶段。如图3.1所示,一个指令的执行需要5个时钟周期,每个时钟周期的上升沿来临时,此指令所代表的一系列数据和控制信息将转移到下一级处理。

Verilog HDL《实验一Modelsim的使用》实验报告

一、实验目的: 1. 熟悉并掌握Modelsim仿真工具的使用方法; 2. 初步了解Verilog HDL描述简单数字电路的方法; 3. 学习用Verilog HDL编写测试模块。 二、实验设备: 1. PC机一台 2. Sword实验平台 三、实验任务: 1. 实现课本P30例 2.3-8的2选1数据选择器,并编写测试文件进行功能仿真,观察输出波形。 2. 实现课本P32例2.4-1的D触发器,并编写测试模块,进行仿真。 3. 根据例2.3-8,试着设计4选1的数据选择器电路,并编写测试模块,进行仿真。 四、实验原理: 2选1数据选择器:若该数据选择器的sel端为不定态x,则out由in1和in2按位运算的结果得出。若in1=4’b0011,in2=4’b0101,则out=4’b0xx1。 当sel为低电平0时,out等于in1,反之为in2。 五、实验步骤: 三个题的实验步骤一样,这里以第一题为例: 1. 新建一个工程,取名为mux21。

2.在mux21工程中新建一个Verilog文件,取名为mux21。 3.打开mux21.v文件,编写程序源代码。 4.编译源程序。 5.在mux21工程中再新建一个测试文件,取名为mux21_tb。

6.打开mux21_tb.v文件,编写测试程序源代码。 7.编译测试程序。 8.进行仿真,观察波形 六、实验结果: 2选1数据选择器modelsim功能仿真图:

当sel信号为低电平0时,数据选择器选择in1信号,所以out输出信号与in1信号一致,当sel信号为高电平1时,数据选择器选择in2信号,所以out输出信号与in2信号一致。 D触发器modelsim功能仿真图: D触发器:仿真刚开始时,clk时钟信号的上升沿未到来,out为不定态。当时钟信号的上升沿到来时,out端输出in信号,因此在每一个上升沿到来时,out的值变为in并保持到下一个上升沿时刻到来后作出变化。 4选1数据选择器modelsim功能仿真图: 当选择信号为00时,输出信号与in0一致;当选择信号为01时,输出信号与in1一致;当选择信号为10时,输出信号与in2一致;当选择信号为11时,输出信号与in3一致。 七、心得体会: 此次实验需要用到Modelsim仿真软件,我在此前安装的软件不能编辑代码,然后上网查找原因,是因为我的安装路径中有空格,然后我重新安装了一次后解决了这个问题。实验题目是实现2选1数据选择器,第一次写代码的时候不注意文件命名规范,对测试文件中变量初始化的时候,命名和程序名不一样,这就导致不能通过编译,仿真无法顺利进行。因此,在给模型起名的时候要多注意。还有就是新建程序文件的时候一定要选择Verilog语言描述,因为系统默认文件类型为VHDL语言描述。因为第一次试验不熟悉软件,所以我在课余一定要多动手写代码,熟悉Modelsim软件的环境,为以后的实验打好基础。

含异步清0和同步时钟使能的4位加法计数器 EDA技术与Verilog HDL实验报告

含异步清0和同步时钟使能的4位加法计数器 一.实验目的 熟悉在QuartusII下设计含异步清0和同步时钟使能的4位加法计数器。二.实验内容 在QuartusII下设计含异步清0和同步时钟使能的4位加法计数器,并编译、仿真验证其功能。 三.程序清单 计数器顶层文件设计: 10进制计数器文本输入: module CNT10(clk,rst,en,load,cout,dout,data); input clk,en,rst,load; input [3:0] data; output[3:0] dout; output cout; reg [3:0] q1; reg cout; assign dout = q1; always @(posedge clk or negedge rst) begin if (!rst) q1<=0;

else if(en) begin if (!load) q1<=data; else if(q1<9) q1<=q1+1; else q1<=4'b0000; end end always @(q1) if (q1==4'h9) cout= 1'b1; else cout= 1'b0; endmodule 60位计数器文本输入: module CNT60(CLK,EN,RST,LOAD,COUT1,COUT2,DOUT1,DOUT2,DATA); input CLK,EN,RST,LOAD;

input [3:0] DATA; output[3:0] DOUT1; output[2:0] DOUT2; output COUT1; output COUT2; reg [3:0] Q1; reg [2:0] Q2; reg COUT1; reg COUT2; assign DOUT1 = Q1; assign DOUT2 = Q2; always @(negedge CLK or negedge RST) begin if(!RST) Q1<=0; else if (EN) begin if (!LOAD) Q1<=DATA; else if (Q1<9) Q1<=Q1+1; else Q1<=4'b0000; end end always @(Q1) if (Q1==4'h9) COUT1=1'b1;

最新Verilog-HDL高级数字设计实验报告--“俄罗斯方块”FPGA实现

最新V e r i l o g-H D L 高级数字设计实验报告--“俄罗斯方 块”F P G A实现

Verilog HDL高级数字设计 实验报告 题目:“俄罗斯方块”FPGA实现

实验目的 通过此次项目,完成以下目的: 1)熟悉Xilinx FPGA的架构及开发流程 2)设计一个功能完整的系统,掌握FSM + Datapath的设计方法。 实验内容 1.项目介绍 本项目主要在FPGA上实现了一个经典小游戏“俄罗斯方块”。本项目基本解决方案是,使用Xilinx Zynq系列开发板ZedBoard作为平台,实现主控模块,通过VGA接口来控制屏幕进行显示。 2.系统框架 整个系统由四部分组成,按键输入处理模块、控制模块、数据路径模块以及VGA显示接口模块。整个系统的结构如下图所示:

图1:系统框图 下面分别对四个模块进行介绍: 1)按键输入处理模块 按键处理模块的主要功能是对输入系统的up,down,left,right四个控制信号进行消抖处理,并对其进行上升沿检测。 消抖模块采用上课所提出的结构,采用了一个4位的移位寄存器,先将输入信号延迟4个时钟周期,再对其以一个较低的时钟频率进行采用。消抖模块的结构如下图所示:

图2:消抖模块结构示意图 为了简化控制系统,在本系统的设计过程中,不考虑长时间按键产生连按效果。因而,需要对按键进行上升沿检测。上升沿检测的基本实现方案是加入一组寄存器,对前一个的按键信号进行暂存,将暂存的值与当前值进行比较,当上一个值为0而当前值为1时,即认为其检测到了一个上升沿。 2)控制模块 控制模块采用FSM的方式进行控制。在控制模块中,定义了10个状态: S_idle:上电复位后进入的空状态,当start信号为1时进入S_new状态 S_new:用于产生新的俄罗斯方块。

相关文档