数字逻辑实验报告-Verilog时序逻辑设计
- 格式:doc
- 大小:1.29 MB
- 文档页数:12
课程名称:Verilog数字系统设计实验实验项目:时钟姓名:专业:计算机科学与技术班级:学号:计算机科学与技术学院201年月日哈尔滨理工大学计算机科学与技术学院实验报告实验项目名称:时钟设计一、实验目的1. 掌握 Verilog HDL 语言的基本运用;2. 熟悉 QuartusⅡ的简单操作;3. 掌握一个基本 EDA 工程设计流程;4. 掌握时钟的设计基本原理。
二、实验内容计数器部分中包含有三个主要计数部分,分别是十进制、六进制以及二十四进制,其中六进制和十进制共同组成六十进制,即实现分和秒的计数,之所以将其分开是便于分别显示个位和十位,通过编写计数器,来计数信号的数量,从而实现时分秒按各自的进制正常计数,同时,将前一时钟单位的进位信号作为下一时钟单位的clk,即从后向前驱动,这样便实现了时钟的正常运转。
三、实验要点及说明1.编写各个模块的 VHDL 代码并进行编译与波形仿真, 仿真无误后生成元件符号。
2.设计数字钟电路的顶层文件,在顶层文件中调入第一步中生成的元件符号,并根据连接关系将它们连接在一起。
3.引脚分配,为顶层设计文件中的各个输入输出端口分配芯片相应的引脚。
4.下载程序到芯片,观看实验现象是否为预想的那样。
同时使用清零按键看能否实现清零,时间正常走动情况下通过按键能否实现校时。
四、实验结果下载成功后,拨动开关 DP4至髙电平,使六个数码管复位淸零;拨动开关 DP4 至低电平,数字钟开始自动计,此过程中可以通过 1键设置小时数,2 键设置分钟数。
当秒数满 60 则进一位, 分钟数满60 进一位,当显示为 23:59:59 时,秒数在加一则显示 00:00:00,同时指示一天结束的 LED 灯亮 10 秒,之后从新计时。
五、程序代码module clock(clk,rst,load,data,lamp,de, led_g,st_stop,ledcom);// clk-时钟10M,rst-复位,load-初始值设置,st_stop-启动暂停input clk,rst,load,st_stop;input [7:0] data; //初始值output lamp; //倒计时结束指示灯output [2:0]de; //数码管位选output [7:0]led_g; //数码管段码output ledcom; //指示灯公共端reg clk_g; // ..... LED扫描时钟信号......reg clk_s;// 秒时钟reg[15:0] cnt1; // 10ms 分频计数器reg[23:0] cnt2; // 1s 分频器计数器reg[3:0] bcd1; // 个位bcd码reg[3:0] bcd2; // 十位bcd码reg lamp; // 指示灯reg[1:0]state1; // 2位数码管扫描位置寄存器reg[3:0]led_g_bcd; // bcd转段码寄存器parameterLED1=3'b000,//数码管1LED2=3'b001;//数码管2assign ledcom=1;//// 10Mhz 晶振用2个分频器分别产生数码管扫描时钟和秒时钟// 10ms方波时钟clk_galways @(posedge clk)beginif (cnt1 >=50000)begincnt1 <= 0;clk_g <= ~clk_g;endelsecnt1 <= cnt1 +1'b1;end// 1s方波时钟clk_salways @(posedge clk)beginif (cnt2 >=5000000)begincnt2 <= 0;clk_s <= ~clk_s;endelsecnt2 <= cnt2 +1'b1;endalways@(posedge clk_s or negedge rst or posedge load ) beginif(!rst) //复位初始状态beginlamp<=0; //灭灯bcd1<=0; //数码管输出0bcd2<=0; //endelseif (load)beginbcd1<=data[3:0];//设置初值bcd2<=data[7:4];//endelseif (st_stop) // 启动暂停切换//BCD倒计时计算,到0时亮灯beginif(bcd1==9) //个位/*******/beginif(bcd2==5) lamp<=1;elsebeginbcd1<=0;bcd2<=bcd2+1;endend/******/elsebeginbcd1<=bcd1+1;lamp<=0;endendend//数码管对应位置扫描输出always @(posedge clk_g or negedge rst)beginif(!rst)beginstate1<=LED1;led_g_bcd<= 0;endelsecase(state1)LED1:beginled_g_bcd<=bcd1;state1<=LED2;endLED2:beginled_g_bcd<=bcd2;state1<=LED1;endendcaseendassign de=state1; //位置//数码管段码表译码assign led_g=(led_g_bcd==0)? 8'h3F:(led_g_bcd==1)? 8'h06:(led_g_bcd==2)? 8'h5b:(led_g_bcd==3)? 8'h4f:(led_g_bcd==4)? 8'h66:(led_g_bcd==5)? 8'h6d:(led_g_bcd==6)? 8'h7d:(led_g_bcd==7)? 8'h07:(led_g_bcd==8)? 8'h7f:(led_g_bcd==9)? 8'h6f:8'h00; endmodule。
Verilog数字电路设计实验名称Verilog数字电路设计班级130324姓名张先炳13031205同组者廖瑞13031191自动化与电气工程学院2016年4月25日目录目录 (2)实验一简单组合逻辑设计 (1)1 实验目的 (1)2 实验设备 (1)3 实验内容 (1)4 实验代码 (1)5 仿真结果 (2)选作一:设计一个字节的比较器 (3)1 实验要求 (3)2 模块代码 (3)3 测试代码 (3)4 仿真结果 (4)实验二简单分频时序逻辑电路的设计 (4)1 实验目的 (4)2 实验设备 (4)3 实验内容 (5)4 实验代码 (5)5 仿真结果 (6)选作二:七段数码管译码电路 (6)1 实验要求 (6)2 模块代码 (7)3 测试代码 (8)4 仿真结果 (8)实验三:利用条件语句实现计数分频时序电路 (9)1 实验目的 (9)2 实验设备 (9)3 实验内容 (9)4 实验代码 (9)5 仿真结果 (11)6 实验分析 (11)选作三:设计一个单周期形状的周期波形。
(11)1 实验要求 (11)2 模块代码 (11)3 测试代码 (12)4 仿真结果 (13)实验四:用always块实现较复杂的组合逻辑 (13)1 实验目的 (13)2 实验设备 (13)3 实验内容 (13)4 实验代码 (14)5 仿真结果 (16)选作四:运用always块设计一个8路数据选择器。
(16)1 实验要求 (16)2 模块代码 (16)3 测试代码 (17)4 仿真结果 (18)实验五:在Verilog HDL中使用函数 (19)1 实验目的 (19)2 实验设备 (19)3 实验内容 (19)4 实验代码 (19)5 仿真结果 (21)选作五:设计一个带控制端的逻辑运算电路 (22)1 实验要求 (22)2 模块代码 (22)3 测试代码 (23)4 仿真结果 (25)实验六:在Verilog HDL中使用任务(task) (25)1 实验目的 (25)2 实验设备 (25)3 实验内容 (25)4 实验代码 (25)5 仿真结果 (28)选作六:冒泡法排序 (28)1 实验要求 (28)2 模块代码 (28)3 测试代码 (29)4 仿真结果 (30)选作七:串行输入排序 (30)1 实验要求 (30)2 模块代码 (31)3 测试代码 (32)4 仿真结果 (33)5 实验分析 (34)实验七:利用有限状态机进行时序逻辑的设计 (34)1 实验目的 (34)2 实验设备 (34)3 实验内容 (35)4 实验代码 (35)5 仿真结果 (37)6 实验分析 (37)选作八:楼梯灯 (37)1 实验要求 (37)2 模块代码 (38)3 测试代码 (45)4 仿真结果 (47)5 实验分析 (47)附:分工明细 (49)实验一简单组合逻辑设计1 实验目的1、掌握基本组合逻辑电路的实现方法。
第1篇一、实验目的1. 理解时序电路的基本概念和组成,掌握时序电路的设计方法和分析方法。
2. 掌握计数器、寄存器、移位寄存器等时序电路的应用。
3. 熟悉FPGA开发环境,能够使用Quartus II设计工具进行时序电路的设计和仿真。
二、实验原理时序电路是数字电路中的一种重要电路,它能够根据输入信号的变化,产生一系列有序的输出信号。
时序电路主要由触发器、逻辑门和时钟信号组成。
1. 触发器:触发器是时序电路的基本单元,具有存储一个二进制信息的功能。
常见的触发器有D触发器、JK触发器、T触发器等。
2. 逻辑门:逻辑门用于实现基本的逻辑运算,如与、或、非、异或等。
3. 时钟信号:时钟信号是时序电路的同步信号,用于控制触发器的翻转。
三、实验内容1. 计数器设计(1)设计一个3位同步二进制加计数器。
(2)设计一个3位同步二进制减计数器。
2. 寄存器设计使用74LS74触发器设计一个双向移位寄存器。
3. 移位寄存器设计使用74LS74触发器设计一个单向移位寄存器。
4. 环形计数器设计使用74LS74触发器设计一个环形计数器。
5. 可控分频器设计使用Verilog HDL语言设计一个可控分频器,实现时钟信号的分频功能。
四、实验步骤1. 使用Quartus II设计工具创建工程,并添加所需的设计文件。
2. 根据实验原理,编写时序电路的Verilog HDL代码。
3. 编译代码,并生成测试平台。
4. 在测试平台上进行仿真,验证时序电路的功能。
5. 将设计下载到FPGA,进行硬件实验。
6. 记录实验结果,分析实验现象。
五、实验结果与分析1. 计数器实验结果(1)3位同步二进制加计数器:按照时钟信号的变化,计数器能够从000计数到111。
(2)3位同步二进制减计数器:按照时钟信号的变化,计数器能够从111减到000。
2. 寄存器实验结果使用74LS74触发器设计的双向移位寄存器,能够实现数据的左移和右移功能。
3. 移位寄存器实验结果使用74LS74触发器设计的单向移位寄存器,能够实现数据的左移功能。
时序逻辑电路的Verilog HDL 实现一.实验要求(1):编写JK 触发器、8位数据锁存器、数据寄存器的Verilog HDL 程序,并实现其仿真及其测试程序;(2):在实验箱上设计含异步清零和同步使能的计数器。
(3):进行波形仿真测试后;画出仿真波形。
(4):写出实验心得二.实验内容:(1)1.JK 触发器的元件符号如图7.14所示,其中J 、K 是数据输入端,CLR 是复位控制输入端,当CLR=0时,触发器的状态被置为0态;CLK 是时钟输入端;Q 和QN 是触发器的两个互补输出端。
JK 触发器的状态方程为Q n+1 =J Q n +K Q nJK 触发器的verilog HDL 程序module jkff_rs(clk,j,k,q,rs,set); input clk,j,k,set,rs;output reg q;always@(posedge clk,negedge rs,negedge set)begin if(!rs) q<=1'b0;else if(!set) q<=1'b1;else case({j,k})2'b00:q<=q;2'b01:q<=1'b0;2'b10:q<=1'b1;2'b11:q<=~q;default:q<=1'bx;endcaseendendmoduleJK 触发器的功能:带异步清0,异步置1(低电平有效)JK 触发器的仿真结果JK 触发器的元件符号2.8位数据锁存器锁存器元件符号如图所示。
CLR是复位控制输入端,当CLR=0时,8位数据输出Q[7..0]=00000000。
ENA是使能控制输入端,当ENA=1时,锁存器处于工作状态,输出Q[7..0]=D[7..0];ENA=0时,锁存器的状态保持不变。
OE是三态输出控制端,当OE=1时,输出为高阻态;OE=0时,锁存器为正常输出状态。
《数字系统设计与Verilog HDL》实验报告(二)班级:自动1003班姓名:**学号:********实验二、四位并串转换电路一、实验目的1、了解及掌握时序电路的基本结构常用数字电路;2、通过ModelSim软件编写时序电路的程序进行仿真和调试。
二、实验内容1、熟悉时序电路中时钟的同步与异步用法;2、编写一个四位并串转换设计程序以及测试该模块的测试程序,要求如下:(1)输入一个四位二进制数pin;(2)每个时钟周期按从左往右的顺序输出一位pin的二进制位的数。
三、实验步骤及源程序新建工程及文件,分别添加设计程序及测试程序,进行编译及纠错,编译通过后运行程序仿真进行调试得出结果。
设计模块:module para_to_serial4(pin,clk,reset,sout);input [3:0] pin;input clk,reset;output sout;reg sout;reg [3:0] data;always @(posedge clk or negedge reset)beginif(~reset)beginsout<=1'b0;data<=pin;endelsebegindata<={data[2:0],data[3]};sout<=data[3];endendendmodule测试模块:`timescale 1ns/1nsmodule test_para_to_ser;wire sout;reg [3:0] pin;reg clk,reset;para_to_serial4 test1(pin,clk,reset,sout);initialbeginclk=1'b0;reset=1'b0;#5 reset=1'b1;#300 $stop;endinitialpin=4'b1001;always#5 clk=~clk;endmodule四、实验结果五、实验心得体会这次试验相对于上次有了一定的难度,由于这门课程刚开始学习,我还不能很好地从宏观把握这门课程,对这门课程的认识和理解还不够深刻,所以做实验时遇到了一些困难,虽然找了一些参考资料,有一定的帮助,但最后还是有点纠结,最终在和同学的交流中才比较深刻的对实验有了了解。
实验四FPGA 时序逻辑设计学习目标1、了解可编程数字系统设计的流程2、掌握Quartus II 软件的使用方法3、掌握原理图输入方式设计时序逻辑电路的方法和流程必做实验1、实验内容:设计一个电路,用4×4 矩阵键盘输入一个 4 位数,并在数码管上显示,要求如下:(1)输入时,数字顺序是从左到右。
例如,顺序输入0、1、2、3 应该在数码管上显示“0123” 。
(2)比较输入数值,比较结果用 1 个LED 显示。
如果输入值和你的学号后 4 位相等,则LED灯亮,不等LED灭。
(3)实验箱上的数码管内部已译码,4×4 键盘上拉电阻也已连接好。
2、实验要求:1、根据设计要求划分设计层次、单元模块和接口信号,在预习报告上记录设计过程,绘制系统框图,每个模块的状态转移图或ASM 图,并设计验证方案。
2、用原理图输入法设计所有单元模块并编译,分析编译时产生的错误和警告信息3、对所有的单元模块进行功能仿真,并记录和分析全部仿真结果4、在顶层文件中连接全部单元模块并编译、综合、分配管脚和适配。
5、对整个系统进行时序仿真,并记录和分析仿真结果。
6、将仿真正确的设计下载到实验箱上,连接输入输出设备和示波器进行板级验证实验内容设计原理矩阵式键盘,将I/O线分别组成行、列结构,按键设置在行列的交点上。
4×4行列键用4条I/O线作为行线,4条I/O线作为列线所组成的的键盘,16个按键分别设置在行、列线的交点处,行线、列线分别连接到按键开关的两端。
所有的行线和列线都通过上拉电阻接电源,钳位在高电平状态。
相比较独立式按键,4×4行列式键盘只需要8 根I/O 线就实现了16个按键,节省了8个I/O口。
但由于行、列线为多键共用,各按键彼此将相互发生影响,必须将行、列线信号配合起来并作适当的处理,才能确定闭合键的位置。
通过对行线轮流加低电平信号,的值在1110,1101,1011和0111之间变化。
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’) thenq <= d; end if;end process;process(g,d) begin ――锁存器if g=1 then q <= d; end if;end process;Verilog HDL 中,时序电路通过always 块语句和@(posedge clk)或@(negedge clk)边沿条件方式实现,例如:always @(posedge clk) //二分频器begin if (! Rst) clk_out = 0;else clk_out =~clk_out; end3. 实验设备与软件平台D E2-115实验板,Q u a r tu s I I v5.0,微型计算机,。
一、实验目的1. 理解时序逻辑电路的基本概念和工作原理。
2. 掌握时序逻辑电路的设计方法和测试方法。
3. 熟悉常用中规模集成计数器和寄存器的逻辑功能和使用方法。
二、实验原理时序逻辑电路是指其输出不仅取决于当前输入信号,还取决于电路的过去状态。
本实验主要涉及计数器和寄存器两种时序逻辑电路。
计数器:计数器是一种能够对输入脉冲进行计数的时序逻辑电路。
常见的计数器有二进制计数器、十进制计数器和可编程计数器等。
寄存器:寄存器是一种用于存储二进制信息的时序逻辑电路。
常见的寄存器有D型寄存器、移位寄存器和计数寄存器等。
三、实验设备1. 数字电子技术实验箱2. 示波器3. 信号源4. 集成芯片:74LS163、74LS00、74LS20等四、实验内容1. 计数器设计(1)设计一个4位二进制加法计数器,实现0-15的循环计数。
(2)设计一个10进制计数器,实现0-9的循环计数。
2. 寄存器设计(1)设计一个D型寄存器,实现数据的存储和读取。
(2)设计一个移位寄存器,实现数据的右移和左移。
3. 时序逻辑电路测试(1)测试计数器的计数功能。
(2)测试寄存器的存储和读取功能。
五、实验步骤1. 计数器设计(1)根据计数器的功能要求,设计电路图。
(2)根据电路图,选择合适的集成芯片。
(3)搭建实验电路。
(4)测试计数器的计数功能。
2. 寄存器设计(1)根据寄存器的功能要求,设计电路图。
(2)根据电路图,选择合适的集成芯片。
(3)搭建实验电路。
(4)测试寄存器的存储和读取功能。
3. 时序逻辑电路测试(1)测试计数器的计数功能。
(2)测试寄存器的存储和读取功能。
六、实验结果与分析1. 计数器设计(1)4位二进制加法计数器能够实现0-15的循环计数。
(2)10进制计数器能够实现0-9的循环计数。
2. 寄存器设计(1)D型寄存器能够实现数据的存储和读取。
(2)移位寄存器能够实现数据的右移和左移。
3. 时序逻辑电路测试(1)计数器的计数功能正常。
时序逻辑电路的设计与测试实验报告一、实验目的本实验旨在让学生掌握时序逻辑电路的设计与测试方法,了解时序逻辑电路的基本原理和特点,以及掌握时序逻辑电路的设计流程和测试方法。
二、实验原理1. 时序逻辑电路的基本原理时序逻辑电路是指由组合逻辑电路和存储器件组成的电路,具有记忆功能。
它能够根据输入信号的状态和过去的状态来决定输出信号的状态。
时序逻辑电路包括触发器、计数器、移位寄存器等。
2. 时序逻辑电路的特点(1)具有记忆功能,能够存储过去状态;(2)输出信号不仅与输入信号相关,还与过去状态相关;(3)具有延迟特性,输出信号需要一定时间才能稳定下来。
3. 时序逻辑电路的设计流程(1)确定功能要求;(2)选择合适的存储器件和触发器;(3)设计组合逻辑部分;(4)设计时钟控制部分;(5)综合验证。
4. 时序逻辑电路测试方法常用测试方法包括仿真测试和实际硬件测试。
仿真测试可以通过软件工具进行,实际硬件测试需要使用实验设备进行。
三、实验内容本次实验的内容为设计一个简单的计数器电路,该电路能够对输入信号进行计数,并将结果输出到LED灯上。
四、实验步骤1. 确定功能要求本次实验要求设计一个4位二进制计数器,能够对输入信号进行计数,并将结果输出到LED灯上。
2. 选择合适的存储器件和触发器本次实验选择D触发器作为存储器件,因为它具有较高的稳定性和可靠性。
同时,还需要选择合适的时钟控制电路,以确保计数器能够正常工作。
3. 设计组合逻辑部分组合逻辑部分主要包括加法器和译码器。
加法器用于将当前计数值加1,译码器则用于将二进制码转换成LED灯能够显示的十进制码。
4. 设计时钟控制部分时钟控制部分主要包括时钟发生电路和时序控制电路。
时钟发生电路用于产生稳定的时钟信号,时序控制电路则用于控制D触发器的输入端和输出端。
5. 综合验证综合验证包括仿真测试和实际硬件测试。
仿真测试可以通过软件工具进行,实际硬件测试需要使用实验设备进行。
verilog课程设计实验报告一、教学目标本课程旨在通过Verilog硬件描述语言的学习,让学生掌握数字电路设计的自动化工具,理解并实践硬件描述语言在数字系统设计中的应用。
通过本课程的学习,学生应达到以下目标:1.知识目标:–理解Verilog的基本语法和结构。
–掌握Verilog中的模块化设计方法。
–学习常用的Verilog描述技巧,包括逻辑门级建模、行为级建模和结构级建模。
2.技能目标:–能够运用Verilog语言进行简单的数字电路设计。
–学会使用至少一种Verilog仿真工具进行电路功能验证。
–能够阅读和理解Verilog代码,进行简单的代码优化。
3.情感态度价值观目标:–培养学生的团队合作意识,在实验报告中能够体现分工合作的精神。
–培养学生的问题解决能力,鼓励学生在遇到问题时积极寻找解决方案。
–培养学生对新技术的好奇心和学习兴趣,激发他们对电子工程领域的热爱。
二、教学内容依据教学目标,本课程的教学内容将围绕Verilog语言的基础知识、实践应用和项目设计展开。
教学大纲安排如下:1.第一部分:Verilog基础知识(2周)–介绍Verilog的背景和基本概念。
–详细讲解Verilog的数据类型、运算符和语句。
2.第二部分:模块化设计(2周)–讲解模块的定义和封装。
–实践模块的端口声明和模块实例化。
3.第三部分:数字电路的Verilog描述(2周)–通过实例教学,掌握逻辑门、触发器等基本组件的Verilog建模。
–学习组合逻辑和时序逻辑的设计方法。
4.第四部分:仿真与测试(1周)–学习使用仿真工具进行电路功能验证。
–理解并实践测试台(testbench)的编写。
5.第五部分:项目设计(3周)–小组合作完成一个较为复杂的数字系统设计项目。
–包括系统模块的划分、编码、仿真和测试。
三、教学方法为了提高学生的学习效果,将采用多种教学方法相结合的方式进行授课:1.讲授法:用于讲解Verilog的基本概念和语法。
电子科技大学实验报告学生姓名:任彦璟学号:2015040101018 指导教师:吉家成米源王华一、实验项目名称:Verilog时序逻辑设计二、实验目的:掌握边沿D触发器74x74、同步计数器74x163、4位通用移位寄存器74x194,的工作原理。
设计移位寄存器74x194设计3位最大序列长度线性反馈移位寄存器(LFSR:Linear Feedback Shift Register)计数器。
设计同步计数器74x163 。
三、实验内容:1.设计边沿D触发器74x74。
2.设计通用移位寄存器74x194。
3.采用1片74x194和其它小规模逻辑门设计3位LFSR计数器。
4.设计4位同步计数器74x163。
四、实验原理:74x74逻辑电路图CLK_D CLR_L_DS1_LS1_H S0_LS0_Hw1w2w3w4w5w6w7w8w9w10w11w12w13w14w15w16w17w18w19w20 74x194逻辑电路图3位LFSR逻辑电路图74x163逻辑电路图上图的设计可以采用门级描述,也可以采用教材《数字设计—原理与实践》(第4版)第525页的表8-20中的行为描述五、实验器材(设备、元器件):PC 机、Windows XP 、Anvyl 或Nexys3开发板、Xilinx ISE 14.7开发工具、Digilent Adept 下载工具。
六、实验步骤:实验步骤包括:建立新工程,设计代码与输入,设计测试文件,设置仿真,查看波形,约束与实现、生成流代码与下载调试。
七、关键源代码及波形图:1.D 触发器的Verilog 代码 源码如下module vr74x74(CLK, D, PR_L, CLR_L, Q, QN);input CLK, D, PR_L, CLR_L ;output Q, QN ;wire w1, w2, w3, w4 ;nand (w1, PR_L, w2, w4);nand (w2, CLR_L, w1, CLK) ; nand (w3, w2, CLK, w4) ;仿真结果如下图所示检查输入输出关系,设计无误。
数字逻辑实验报告本次实验旨在通过数字逻辑实验的设计和实现,加深对数字逻辑电路原理的理解,并通过实际操作提高动手能力和解决问题的能力。
在本次实验中,我们将学习数字逻辑实验的基本原理和方法,掌握数字逻辑实验的设计与调试技巧,提高实验操作的熟练程度。
首先,我们进行了数字逻辑实验的准备工作,包括熟悉实验设备和器材的使用方法,了解实验电路的基本原理和设计要求。
在实验过程中,我们按照实验指导书上的要求,逐步完成了数字逻辑实验电路的设计、搭建和调试。
在实验过程中,我们遇到了一些问题,但通过分析问题的原因并进行逐步排除,最终成功完成了实验。
其次,我们进行了数字逻辑实验电路的测试和验证。
通过使用示波器、逻辑分析仪等测试设备,我们对搭建好的数字逻辑电路进行了测试,验证了实验电路的正确性和稳定性。
在测试过程中,我们发现了一些问题,但通过仔细观察和分析,最终找到了解决问题的方法,并取得了满意的测试结果。
最后,我们总结了本次实验的经验和教训。
通过本次实验,我们深刻理解了数字逻辑电路的原理和实现方法,提高了实验操作的技能和水平,增强了动手能力和解决问题的能力。
在今后的学习和工作中,我们将继续努力,不断提高自己的专业能力和实践能力,为将来的发展打下坚实的基础。
通过本次实验,我们对数字逻辑实验有了更深入的了解,对数字逻辑电路的设计和实现有了更加丰富的经验,相信在今后的学习和工作中,我们能够更加熟练地运用数字逻辑知识,为实际工程问题的解决提供有力的支持。
总之,本次实验不仅增强了我们对数字逻辑实验的理解和掌握,也提高了我们的实验操作能力和解决问题的能力。
希望通过今后的学习和实践,我们能够不断提高自己的专业水平,为将来的发展打下坚实的基础。
计算机学院专业班__组、学号姓名协作者______________ 教师评定_________________实验题目基于Libero的数字逻辑设计仿真及验证实验1、熟悉EDA工具的使用;仿真基本门电路。
2、仿真组合逻辑电路。
3、仿真时序逻辑电路。
4、基本门电路、组合电路和时序电路的程序烧录及验证。
5、数字逻辑综合设计仿真及验证。
实验报告1、基本门电路一、实验目的1、了解基于Verilog的基本门电路的设计及其验证。
2、熟悉利用EDA工具进行设计及仿真的流程。
3、学习针对实际门电路芯片74HC00、74HC02、74HC04、74HC08、74HC32、74HC86进行VerilogHDL设计的方法。
二、实验环境Libero仿真软件。
三、实验内容1、掌握Libero软件的使用方法。
2、进行针对74系列基本门电路的设计,并完成相应的仿真实验。
3、参考教材中相应章节的设计代码、测试平台代码(可自行编程),完成74HC00、74HC02、74HC04、74HC08、74HC32、74HC86相应的设计、综合及仿真。
4、提交针对基本门电路的综合结果,以及相应的仿真结果。
四、实验结果和数据处理1、门电路...模块及测试平台代码清单注:文件命名要求。
工程(project)名要求:学号末4位+下划线+BasGate,例如陈静(3212005896)的工程名为“5896_BasGate”。
设计代码文件名1:要求同上,即“5896_BasGate.v”。
测试平台文件名:自己定义。
(1)// 模块一:2输入与门、或门、与非、或非、异或门各一,输入信号(1位A,1位B),输出信号(Y1,Y2,Y3,Y4,Y5)module gates_1(A,B,Y1,Y2,Y3,Y4,Y5);input A,B;output Y1,Y2,Y3,Y4,Y5;assign Y1=A&B;assign Y2=A|B;assign Y3=~(A&B);assign Y4=~(A|B);assign Y5=A^B;endmodule(2)// 模块二:6个非门(同74HC04)module gates_2(A,Y);input [1:6]A;output [1:6]Y;assign Y=~A;endmodule(3)测试平台代码`timescale 1ns/1nsmodule testgates_1();reg A,B;wire Y1,Y2,Y3,Y4,Y5;gates_1 v1(A,B,Y1,Y2,Y3,Y4,Y5);initialbeginA=0;B=0;#10 B=1;#10 A=1;#10 B=0;#10;endendmodulemodule testgates_2();reg [1:6]A;wire [1:6]Y;gates_2 v2(A,Y);initialbeginA=000001;#10 A=A<<1;#10 A=A<<1;#10 A=A<<1;#10 A=A<<1;#10 A=A<<1;endendmodule2、模块一第一次仿真结果(截图..,调整窗口至合适大..)。
用Verilog-HDL做CPLD设计(时序逻辑电路的实现)第8 讲用Verilog-HDL做CPLD设计时序逻辑电路的实现8.1 闪烁灯的实现8.2 流水灯的实现8.3 可编程单脉冲发生器在第七讲中,已经介绍了组合逻辑电路的实现。
组合逻辑电路的特点是:在任意时刻,电路产生的稳定输出仅与当前时刻的输入有关。
时序逻辑电路则不同于它,其特点是:在任意时刻电路产生的稳定输出不仅与当前时刻的输入有关,而且还与电路过去的输入有关。
本讲中将介绍时序逻辑电路的实现。
8.1 闪烁灯的实现在目标板上,设计有一个10MHz的时钟源。
假如直接把它输出到发光二级管LED,由于人眼的延迟性,我们将无法看到LED闪烁,认为它一直亮着。
如果我们期望看到闪烁灯,就需要将时钟源的频率降低后再输出。
因此,可以采用如图1所示的逻辑功能框图。
图1 闪烁灯的逻辑功能框图其中,CLK表示10MHz的时钟源,作为输入;LED0-LED7表示发光二极管,作为输出;6、44、43、38、37、36、35、40和42是上述变量对应芯片XC9536的引脚。
虚线框中的部分是CPLD设计,用于实现闪烁灯的功能。
如图1所示,在XC9536中,加入计数电路与判别电路。
计数电路可用计数器实现。
每来一个时钟脉冲CLK,计数器就加1。
而每当判断出计数器达到某个数值时,就使得灯LED0-LED7的亮灭反转一次,即:周期性地输出高电平"1"和低电平"0"。
这样设计也就相当于把10MHz的时钟源分频后再输出。
如果最终要使得灯1s闪烁一次,即:输出1Hz的时钟脉冲,就需要把10MHz的时钟经过107分频。
根据上述分析,可以得到下面的Verilog- HDL 描述。
/* 闪烁灯的Verilog-HDL描述*/module LIGHT ( CLK, LED ); // 模块名及端口参数,范围至endmoduleinput CLK; // 输入端口定义,对应第6脚output [7:0] LED;// 输出端口定义,LED[0]-LED[7]分别对应第44、43、38、37、36、35、40和42脚reg [7:0] LED; // 输出端口定义为寄存器型reg [22:0] buffer; // 中间变量buffer定义为寄存器型always @ ( posedge CLK )// always语句,表示每当CLK的上升沿到来时,完成begin-end之间语句的操作begin // 顺序语句,到end止buffer = buffer +1; // 缓冲器buffer按位加1if ( buffer == 23'b11111111111111111111111)// 判别buffer中的数值为(2^23-1)≈10^7时,做输出处理//"23"表示以位计的数值长度,"b"表示二进制,"11…1"表示二进制的数字序列beginLED=~LED; // LED[0]-LED[7]反转一次,即:由0变为1,或由1变为0endendendmodule把以上闪烁灯的描述,用WebPACK Project Navigator软件,生成目标文件,并通过下载电缆写入芯片XC9536中。
实验五时序逻辑电路实验报告一、实验目的1.了解时序逻辑电路的基本原理和设计方法。
2.掌握时序逻辑电路的设计方法。
3.运用Verilog语言进行时序逻辑电路的设计和仿真。
二、实验原理时序逻辑电路是指在电路中引入记忆元件(如触发器、计数器等),通过电路中的时钟信号和输入信号来控制电路的输出。
时序逻辑电路的输出不仅与当前输入有关,还与之前输入和输出的状态有关,因此对于时序逻辑电路的设计,需要考虑时钟信号的频率、输入信号的变化及当前状态之间的关系。
三、实验内容本次实验通过使用Verilog语言设计和仿真下列时序逻辑电路。
1.设计一个10进制累加器模块,实现对输入信号进行累加并输出,并在仿真中验证结果的正确性。
2.设计一个4位二进制计数器模块,实现对输入时钟信号的计数,并在仿真中验证结果的正确性。
3.设计一个4位带加载/清零控制功能的二进制计数器模块,实现对输入时钟信号的计数,并在仿真中验证结果的正确性。
四、实验步骤1.根据实验原理和要求,利用Verilog语言设计10进制累加器模块。
在设计中需要注意时钟的频率和输入信号的变化。
2.编译并运行仿真程序,验证设计的10进制累加器模块的正确性。
3.在设计时钟频率和输入信号变化的基础上,设计4位二进制计数器模块。
4.编译并运行仿真程序,验证设计的4位二进制计数器模块的正确性。
5.在设计4位二进制计数器模块的基础上,引入加载/清零控制功能,设计一个4位带加载/清零控制功能的二进制计数器模块。
6.编译并运行仿真程序,验证设计的带加载/清零控制功能的二进制计数器模块的正确性。
7.总结实验结果,撰写实验报告。
五、实验结果与分析1.经过验证实验,10进制累加器模块能够正确实现对输入信号的累加并输出正确的结果。
2.经过验证实验,4位二进制计数器模块能够正确实现对输入时钟信号的计数,并输出正确的计数结果。
3.经过验证实验,带加载/清零控制功能的二进制计数器模块能够正确实现对输入时钟信号的计数,并在加载或清零信号的控制下实现加载或清零操作。
第1篇一、实验目的1. 巩固和加深对数字电路基本原理和电路分析方法的理解。
2. 掌握数字电路仿真工具的使用,提高设计能力和问题解决能力。
3. 通过综合实验,培养团队合作精神和实践操作能力。
二、实验内容本次实验主要分为以下几个部分:1. 组合逻辑电路设计:设计一个4位二进制加法器,并使用仿真软件进行验证。
2. 时序逻辑电路设计:设计一个4位计数器,并使用仿真软件进行验证。
3. 数字电路综合应用:设计一个数字时钟,包括秒、分、时显示,并使用仿真软件进行验证。
三、实验步骤1. 组合逻辑电路设计:(1)根据题目要求,设计一个4位二进制加法器。
(2)使用Verilog HDL语言编写代码,实现4位二进制加法器。
(3)使用ModelSim软件对加法器进行仿真,验证其功能。
2. 时序逻辑电路设计:(1)根据题目要求,设计一个4位计数器。
(2)使用Verilog HDL语言编写代码,实现4位计数器。
(3)使用ModelSim软件对计数器进行仿真,验证其功能。
3. 数字电路综合应用:(1)根据题目要求,设计一个数字时钟,包括秒、分、时显示。
(2)使用Verilog HDL语言编写代码,实现数字时钟功能。
(3)使用ModelSim软件对数字时钟进行仿真,验证其功能。
四、实验结果与分析1. 组合逻辑电路设计:通过仿真验证,所设计的4位二进制加法器能够正确实现4位二进制加法运算。
2. 时序逻辑电路设计:通过仿真验证,所设计的4位计数器能够正确实现4位计数功能。
3. 数字电路综合应用:通过仿真验证,所设计的数字时钟能够正确实现秒、分、时显示功能。
五、实验心得1. 通过本次实验,加深了对数字电路基本原理和电路分析方法的理解。
2. 掌握了数字电路仿真工具的使用,提高了设计能力和问题解决能力。
3. 培养了团队合作精神和实践操作能力。
六、实验改进建议1. 在设计组合逻辑电路时,可以考虑使用更优的电路结构,以降低功耗。
2. 在设计时序逻辑电路时,可以尝试使用不同的时序电路结构,以实现更复杂的逻辑功能。
实验报告1、基本门电路一、实验目的1、了解基于Verilog的基本门电路的设计及其验证。
2、熟悉利用EDA工具进行设计及仿真的流程。
3、学习针对实际门电路芯片74HC00、74HC02、74HC04、74HC08、74HC32、74HC86进行VerilogHDL设计的方法。
二、实验环境Libero仿真软件。
三、实验内容1、掌握Libero软件的使用方法。
2、进行针对74系列基本门电路的设计,并完成相应的仿真实验。
3、参考教材中相应章节的设计代码、测试平台代码(可自行编程),完成74HC00、74HC02、74HC04、74HC08、74HC32、74HC86相应的设计、综合及仿真。
4、提交针对74HC00、74HC02、74HC04、74HC08、74HC32、74HC86)的综合结果,以及相应的仿真结果。
(任选一个....四、实验结果和数据处理1、所有模块及测试平台代码清单..//74HC00代码-与非// HC00.vmodule HC00(A,B,Y);input [4:1]A,B;output [4:1]Y;assign Y=~(A&B);endmodule//74HC00测试平台代码// test.v`timescale 1ns/1nsmodule test1();reg [4:1]a,b;wire [4:1]y;HC00 u1(a,b,y);initialbegina=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;endendmodule//74HC02代码-或非// HC02.vmodule 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);initialbegina=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;endendmodule//74HC04代码-非// HC04.vmodule HC04(A,Y); input [6:1]A;output [6:1]Y;assign Y=~A; endmodule//74HC04测试平台代码// test.v`timescale 1ns/1ns module test3();reg [6:1]a;wire [6:1]y;HC04 u3(a,y);initialbegina=4'b000001;#10 a=a<<1;#10 a=a<<1;#10 a=a<<1;#10 a=a<<1;#10 a=a<<1;endendmodule//74HC08代码-与// HC08.vmodule HC08(A,B,Y); input [4:1]A,B; output [4:1]Y; assign Y=A&B;endmodule//74HC08测试平台代码// test.v`timescale 1ns/1ns module test4();reg [4:1]a,b;wire [4:1]y;HC08 u4(a,b,y);initialbegina=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;endendmodule//74HC32代码-或// HC32.vmodule HC32(A,B,Y); input [4:1]A,B;output [4:1]Y;assign Y=A|B; endmodule//74HC32测试平台代码// test.v`timescale 1ns/1ns module test5();reg [4:1]a,b;wire [4:1]y;HC32 u5(a,b,y);initialbegina=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;endendmodule//74HC86代码-异或// HC86.vmodule HC86(A,B,Y); input [4:1]A,B;output [4:1]Y;assign Y=A^B; endmodule//74HC86测试平台代码// test.v`timescale 1ns/1ns module test6();reg [4:1]a,b;wire [4:1]y;HC86 u6(a,b,y);initialbegina=4'b0000; b=4'b0001; #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;endendmodule2、第一次仿真结果(任选一个门,请注明,插入截图,下同.................)。
电子科技大学实验报告学生姓名:任彦璟学号:2015040101018 指导教师:吉家成米源王华一、实验项目名称:Verilog时序逻辑设计二、实验目的:掌握边沿D触发器74x74、同步计数器74x163、4位通用移位寄存器74x194,的工作原理。
设计移位寄存器74x194设计3位最大序列长度线性反馈移位寄存器(LFSR:Linear Feedback Shift Register)计数器。
设计同步计数器74x163 。
三、实验内容:1.设计边沿D触发器74x74。
2.设计通用移位寄存器74x194。
3.采用1片74x194和其它小规模逻辑门设计3位LFSR计数器。
4.设计4位同步计数器74x163。
四、实验原理:74x74逻辑电路图CLK_D CLR_L_DS1_LS1_H S0_LS0_Hw1w2w3w4w5w6w7w8w9w10w11w12w13w14w15w16w17w18w19w2074x194逻辑电路图3位LFSR逻辑电路图74x163逻辑电路图上图的设计可以采用门级描述,也可以采用教材《数字设计—原理与实践》(第4版)第525页的表8-20中的行为描述五、实验器材(设备、元器件):PC 机、Windows XP 、Anvyl 或Nexys3开发板、Xilinx ISE 14.7开发工具、Digilent Adept 下载工具。
六、实验步骤:实验步骤包括:建立新工程,设计代码与输入,设计测试文件,设置仿真,查看波形,约束与实现、生成流代码与下载调试。
七、关键源代码及波形图:1.D 触发器的Verilog 代码源码如下module vr74x74(CLK, D, PR_L, CLR_L, Q, QN);input CLK, D, PR_L, CLR_L ; output Q, QN ; wire w1, w2, w3, w4 ; nand (w1, PR_L, w2, w4); nand (w2, CLR_L, w1, CLK) ; nand (w3, w2, CLK, w4) ; nand (w4, CLR_L, w3, D) ; nand (Q, PR_L, w2, QN); nand (QN, Q, w3, CLR_L); endmodule仿真结果如下图所示检查输入输出关系,设计无误。
2.4位通用移位寄存器74x194 源码如下:moduleVr74x194(CLK,CLR_L,LIN,RIN,S1,S0,A,B,C,D,Q A,QB,QC,QD);input CLK,CLR_L,LIN,RIN,S1,S0,A,B,C,D ;output QA,QB,QC,QD ;wire CLK_D ;wire CLR_L_D ;wire S1_L,S1_H;wire S0_L,S0_H;wire QAN,QBN,QCN,QDN ;wirew1,w2,w3,w4,w5,w6,w7,w8,w9,w10;wirew11,w12,w13,w14,w15,w16,w17,w18,w19, w20;buf(CLK_D,CLK);buf(CLR_L_D,CLR_L);not(m1,S1);not(m0,S0);and(n1,S0,m1,RIN);and(n2,S0,S1,A);and(n3,m0,m1,QA); and(n5,S0,m1,QA);and(n6,S0,S1,B);and(n7,m0,m1,QB);and(n8,m0,S1,QC);and(n9,S0,m1,QB);and(n10,S0,S1,C);and(n11,m0,m1,QC);and(n12,m0,S1,QD);and(n13,S0,m1,QC);and(n14,S0,S1,D);and(n15,m0,m1,QD);and(n16,m0,S1,LIN);or(p1,n1,n2,n3,n4);or(p2,n5,n6,n7,n8);or(p3,n9,n10,n11,n12);or(p4,n13,n14,n15,n16);vr74x74q1(CLK_D,p1,1'b1,CLR_L_D,QA,QAN);vr74x74q2(CLK_D,p2,1'b1,CLR_L_D,QB,QBN);vr74x74q3(CLK_D,p3,1'b1,CLR_L_D,QC,QCN);vr74x74q4(CLK_D,p4,1'b1,CLR_L_D,QD,QDN); endmodule仿真结果如下图所示检验输入输出结果正常,设计无误。
3.3位LFSR计数器源码如下:module LFSR( CLK,RESET,X2,X1,X0);input CLK,RESET;output X2,X1,X0;wire w1,w3,w6 ;Vr74x194 U1(.CLK(CLK),.CLR_L(1'b1),.RIN(w6),.S1(RESET),.S0(1'b1),.A(1'b1),.B(1'b0),.C(1'b0),.D(1'b0),.QA(X2),.QB(X1) ,.QC(X0));xor (w3,X1,X0) ;nor (w1,X2,X1) ;xor (w6,w1,w3) ;endmodule仿真结果如下图所示检验输入输出结果正常,设计无误。
4. 74x163计数器 源码如下and(w21,w20,w25);not(w26,ENT); nor(w1,LD_L,CLR);nor(w2,w1,CLR); xor(w4,w25,~QN[0]); xor(w10,w9,~QN[1]); xor(w16,w15,~QN[2]); xor(w22,w21,~QN[3]); and(w3,w1,A); and(w5,w2,w4); and(w7,w1,B); and(w11,w2,w10); and(w13,w1,C); and(w17,w2,w16); and(w19,w1,D); and(w23,w2,w22); or(w6,w3,w5); or(w12,w7,w11); or(w18,w13,w17); or(w24,w19,w23); vr74x74 U1 (D[0], CLK, 1, CLR_L, Q[0], QN[0]); vr74x74 U2 (D[1], CLK, 1, CLR_L, Q[1], QN[1]); vr74x74 U3 (D[2], CLK, 1, CLR_L, Q[2], QN[2]); vr74x74 U4 (D[3], CLK, 1, CLR_L, Q[3], QN[3]);endmodulemoduleVr74x163(CLK,CLR_L,LD_L,ENP ,ENT,D,Q,RC O ); input CLK,CLR_L,LD_L,ENP ,ENT; input [3:0]D; output [3:0]Q; output RCO; wirew1,w2,w3,w4,w5,w6,w7,w8,w9,w10; wirew11,w12,w13,w14,w15,w16,w17,w18,w19,w20;wire w21,w22,w23,w24,w25,w26; wire CK; wire CLR; wire [3:0]QN; wire CLK1; buf(CLK1,CLK); not(CLR,CLR_L); not(w8,QN[0]); nor(w14,QN[1],QN[0]); nor(w20,QN[2],QN[1],QN[0]); and(w25,ENP ,ENT); and(w9,w8,w25); and(w15,w14,w25);3位LFSR计数器顶层设计模块module lfsr_8_main(input CLK ,input RESET ,output LED2 , LED1 , LED0);wire CLK_1Hz ;counter_100M u1( CLK , CLK_1Hz ) ;LFSR_8 u2(CLK_1Hz , RESET , LED2 , LED1 , LED0 );endmodule仿真结果如下图所示八、实验结论:边沿D触发器负跳沿触发的主从触发器工作时,必须在正跳沿前加入输入信号。
如果在CP 高电平期间输入端出现干扰信号,那么就有可能使触发器的状态出错。
而边沿触发器允许在CP触发沿来到前一瞬间加入输入信号。
移位寄存器D、2D、1D、0D为并行输入端;3Q、2Q、1Q、0Q为并行输出端;RS为右移串行输入端;LS为左移串行输入端1S、0S为操作模式控制端;RC为直接无条件清零端;CP为时钟脉冲输入端。
74LS194有5种不同操作模式:并行送数寄存;右移(方向由3Q→0Q);左移(方向由0Q→3Q);保持及清零。
对于同步计数器,由于时钟脉冲同时作用于各个触发器,克服了异步触发器所遇到的触发器逐级延迟问题,于是大大提高了计数器工作频率,各级触发器输出相差小,译码时能避免出现尖峰;但是如果同步计数器级数增加,就会使得计数脉冲的负载加重。
九、总结及心得体会:在这此次试验中,根据边沿D触发器74x74的原理图编写设计和仿真模块;根据通用移位寄存器74x194的原理图编写设计和仿真模块;采用1片74x194和其它小规模逻辑门设计3位LFSR计数器,编写设计和仿真了模块;根据4位同步计数器74x163的原理图编写设计和仿真了模块;将输入为100MHz的系统时钟采用7片74x163和其它小规模逻辑门设计了1Hz的数字信号;在FPGA开发板上调试了3位LFSR计数器。
十、对本实验过程及方法、手段的改进建议:无报告评分:指导教师签字:。