带有异步复位、同步计数使能和可预置型十进制计数器的verilog设计

合集下载

实验五 含异步清零和同步使能4位加法计数器的VHDL设计

实验五 含异步清零和同步使能4位加法计数器的VHDL设计

实验五含异步清零和同步使能4位加法计数器的VHDL设计一、实验目的1掌握计数器的VHDL设计方法;2掌握异步复位和同步复位和使能的概念;3掌握寄存器性能的分析方法(即分析芯片所能达到的最高时钟频率)。

二、实验内容1异步复位4位加法计数器的设计;2同步复位4位加法计数器的设计。

3异步清0和同步时钟使能的4位加法计数器三、实验原理复位:给计数器一个初值叫复位,如果所给初值为0,则称复位为清零。

异步复位:复位跟时钟无关,只要复位信号的复位电平出现,计数器立即复位,如图5-1所示;同步复位:复位跟时钟有关,当复位信号的复位电平出现时,计数器并不立即复位,而是要等到时钟沿到来时才复位,如图5-2所示。

异步复位4位加法计数器的VHDL设计代码见教材P122-P123,仿真波形如图5-3所示。

同步复位4位加法计数器的VHDL部分代码如下,仿真波形如图5-4所示。

.图5-1异步复位图5-2同步复位图5-3异步复位计数器仿真波形图5-4同步复位计数器仿真波形四、实验步骤(一)异步复位4位加法计数器的设计1建立一个设计工程,工程名为CNT4B;2打开文本编辑器,建立一个VHDL设计文件,其VHDL代码见教材P164中的例6-20,文件名存为CNT4B.VHD。

注意文件的扩展名要选为.vhd,而且要求工程名、文件名和设计实体名必须相同。

3选器件:ACEX1K,EP1K30TC144-3(旧)或Cyclone,EP3C40Q240C8目标芯片。

4编译;5建立波形文件,然后保存,其文件名必须与工程名一致;【波形设置:①设置仿真时间为10us:②设置输入信号的波形:时钟周期设置为200ns,其他输入信号的波形设置参看图6-3。

】6仿真,观察输出波形是否正确;7时序分析:分析芯片所能达到的最高时钟频率。

【打开时序分析器,然后执行菜单命令:analysis/register performance/start,可以看到最高时钟频率为100.00MHZ】(二)同步复位4位加法计数器的设计8建立一个设计工程,工程名为CNT4B_SYS;9打开文本编辑器,建立一个VHDL设计文件,其VHDL代码参看异步计数器代码和实验原理中的参考代码,文件名存为CNT4B_SYS.VHD。

Verilog10进制计数器电路

Verilog10进制计数器电路

练习设计一个10进制计数器电路,把10进制计数器的计数结果送到一位数码管显示,要求计数器的计数频率为1Hz。

系统时钟为25MHz,要求系统同步复位,高电平有效。

完成电路设计框图,各模块仿真以及系统功能仿真和下载编程。

分频器:module fenpin25(clk,rst,clk_1hz);input clk;input rst;output clk_1hz;reg clk_1hz;reg [23:0] cnt;always@(posedge clk or posedge rst)beginif(rst==1'b1)cnt<=24'd0;else if(cnt==13107119)begincnt<=24'd0;clk_1hz<=~clk_1hz;endelsecnt<=cnt+1;endendmodule十进制计数器:module cnt10(rst,clk,cnt);input rst,clk;output [3:0] c nt;reg [3:0] c nt;always@(posedge clk)beginif(rst==1'b0)cnt<=4'b000;else if(cnt==4'd9)cnt<=4'b000;elsecnt<=cnt+1;endendmodule十进制计数器仿真波形图:LED译码器:module qiduan(cnt,led,scan); input [3:0] c nt;output [6:0] l ed;output [3:0] s can;reg [6:0] l ed;wire [3:0] s can;assign scan=4'b0001;always@(cnt)begincase(cnt)4'b0001:led=7'b0000110;4'b0010:led=7'b1011011;4'b0011:led=7'b1001111;4'b0100:led=7'b1100110;4'b0101:led=7'b1101101;4'b0110:led=7'b1111100;4'b0111:led=7'b0000111;4'b1000:led=7'b1111111;4'b1001:led=7'b1101111;4'b1010:led=7'b1110111;default:led=7'b0111111;endcaseendendmoduleLED译码器仿真波形图:顶层电路Verilog HDL代码:module cnt10led(rst,clk,led,scan);input rst;input clk;output [6:0] l ed;output [3:0] s can;wire [3:0] c nt;wire [6:0] l ed;wire [3:0] s can;fenpin25 u0(.clk(clk),.rst(rst),.clk_1hz(clk_1hz)); cnt10 u1(.clk(clk_1hz),.rst(rst),.cnt(cnt)); qiduan u2(.cnt(cnt),.led(led),.scan(scan));endmodule框图:。

实验三 含异步清0和同步时钟使能的十进制

实验三 含异步清0和同步时钟使能的十进制

EDA技术基础实验报告实验名称:含异步清0和同步时钟使能的十进制加法法计数器姓名:李江虹学号:068专业及班级:通信工程(3)班指导老师:刘文进实验三含异步清0和同步时钟使能的十进制加法法计数器一、实验目的:学习时序电路的设计、仿真和硬件测试,进一步熟悉VHDL设计技术。

二、实验原理实验图1是一含计数使能、异步复位十进制加法计数器,例1是其VHDL描述。

由实验图1所示,图中间是4位锁存器;rst是异步清信号,高电平有效;clk是锁存信号;D[3..0]是4位数据输入端。

当ENA为'1'时,多路选择器将加1器的输出值加载于锁存器的数据端;当ENA为'0'时将"0000"加载于锁存器。

图1 含计数使能、异步复位十进制加法计数器三、实验内容在MAX+plusII上参照例1(4位二进制计数器)进行设计、编辑、编译、综合、适配、仿真。

说明例中各语句的作用,详细描述示例的功能特点,给出其所有信号的时序仿真波形。

【例1】LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY CNT4B ISPORT (CLK : IN STD_LOGIC;RST : IN STD_LOGIC;LOAD : IN STD_LOGIC;DATA :IN STD_LOGIC_VECTOR(3 DOWNTO 0);OUTY : OUT STD_LOGIC_VECTOR(3 DOWNTO 0);COUT : OUT STD_LOGIC );END CNT4B;ARCHITECTURE behav OF CNT4B ISSIGNAL CQI : STD_LOGIC_VECTOR(3 DOWNTO 0); BEGINP_REG: PROCESS(CLK, RST,LOAD)BEGINIF RST = '1' THEN CQI <="0000"; ELSIF CLK'EVENT AND CLK = '1' THEN IF LOAD = '1' THEN CQI <= DATA; ELSIF CQI>="1001"THENCQI<="0000";COUT <='1';ELSECQI<=CQI+1;COUT <='0';END IF;END IF;OUTY <= CQI ;END PROCESS P_REG ;END behav;四、引脚锁定以及硬件下载测试。

同步可逆十进制计数器verilog代码

同步可逆十进制计数器verilog代码

同步可逆十进制计数器verilog代码以下是一个同步可逆十进制计数器的Verilog代码:```module sync_reversible_counter(input clk, // 输入时钟信号input reset, // 输入复位信号output reg [3:0] count // 输出计数器值);// 定义状态变量reg [2:0] state;// 初始化状态变量和计数器值initial beginstate = 3'b000;count = 4'b0000;end// 状态转移逻辑always @(posedge clk) beginif (reset) begin // 复位信号为高电平时,将状态变量和计数器值重置为初始值state <= 3'b000;count <= 4'b0000;end else begin // 否则进行状态转移操作case (state)3'b000: begin // 当前状态为000时,下一状态为001,计数器加1state <= 3'b001;count <= count + 1;end3'b001: begin // 当前状态为001时,下一状态为010,计数器加1state <= 3'b010;count <= count + 1;end3'b010: begin // 当前状态为010时,下一状态为011,计数器加1state <= 3'b011;count <= count + 1;end3'b011: begin // 当前状态为011时,下一状态为100,计数器加1state <= 3'b100;count <= count + 1;end3'b100: begin // 当前状态为100时,下一状态为101,计数器加1state <= 3'b101;count <= count + 1;end3'b101: begin // 当前状态为101时,下一状态为110,计数器加1state <= 3'b110;count <= count + 1;end3'b110: begin // 当前状态为110时,下一状态为111,计数器加1state <= 3'b111;count <= count + 1;end3'b111: begin // 当前状态为111时,下一状态为000,计数器加1state <= 3'b000;count <= count + 1;endendcaseendendendmodule```这个Verilog代码实现了一个同步可逆十进制计数器。

十进制计数器设计

十进制计数器设计

十进制计数器设计十进制计数器设计一、实验目的:熟悉Quartus II的Verilog 文本设计流程全过程,学习十进制计数器的设计、仿真,掌握计数器的工作原理。

二、实验原理:计数器属于时序电路的范畴,其应用十分普遍。

该程序设计是要实现带有异步复位、同步计数使能和可预置型的十进制计数器。

该计数器具有5个输入端口(CLK、RST、EN、LOAD、DATA)。

CLK输入时钟信号;RST起异步复位作用,RST=0,复位;EN是时钟使能,EN=1,允许加载或计数;LOAD是数据加载控制,LOAD=0,向内部寄存器加载数据;DATA是4位并行加载的数据。

有两个输出端口(DOUT和COUT)。

DOUT的位宽为4,输出计数值,从0到9;COUT是输出进位标志,位宽为1,每当DOUT为9时输出一个高电平脉冲。

RST在任意时刻有效时,如CLK非上升沿时,计数也能即刻清0;当EN=1,且在时钟CLK的上升沿时刻LOAD=0,4位输入数据DATA被加载,但如果此时时钟没有上升沿,尽管出现了加载信号LOAD=0,依然未出现加载情况;当EN=1,RST=1,LOAD=1时,计数正常进行,在计数数据等于9时进行输出高电平。

三、实验任务:在Quartus II上将设计好的程序进行编辑、编译、综合、适配、仿真,从时序仿真图中学习计数器工作原理,了解计数器的运行情况及时钟输入至计数器数据输出的延时情况。

四、实验步骤:(一)、建立工作库文件和编辑设计文件任何一项设计都是一项Project(工程),而把一个工程下的所有文件放在一个文件夹内是一个非常好的习惯,以便于我们整理,利用和提取不同工程下的文件,而此文件夹将被EDA软件默认为Work Library(工作库),所以第一步先根据自己的习惯,建立个新的文件夹。

(1)新建文件夹:在盘建立并保存工程,将文件夹取名Jishuqi。

(2)输入源程序:打开Quartus II,选择菜单File→New→Design Files→VerilogHDL File→OK(如图1所示)。

实验七含异步清零和同步时钟使能的十进制

实验七含异步清零和同步时钟使能的十进制

实验七含异步清零和同步时钟使能的十进制
加法计数器设计
[实验目的]
1.学习计数器的设计、仿真和硬件测试;
2.进一步熟悉VHDL设计技术;
[实验说明]
设计一个含异步清零和同步时钟使能的十进制加法计数器,其输入分别为时钟信号CLK,复位信号RST,使能信号ENA,输出为四位二进制数D[3..0]。

其对应关系
输出的四位二进制数在“0000”到“1001”之间变化,即十进制从“0”到“9”变化。

当复位信号RST为高电平时,不管CLK和ENA处于何种状态,输出清零。

当RST为非有效电平,ENA为低电平时,输出保持前一状态不发生改变。

当RST为非有效电平,ENA 为高电平时,此时每来一个时钟CLK的上升沿,输出加1,若输出数据超过“1001”则自动清零至“0000”。

[引脚锁定]
选择模式5电路。

用键1(引脚号为233)控制输入RST,用Clock0(引脚号为28)控制输入CLK,用键2 (引脚号为234)控制输入ENA,输出信号直接接数码管8的译码器输入端口(从高位到低位分别接引脚号168,167,166,165),注意未使用的引脚请设置为三态输入。

[实验要求]
1用VHDL语言实现电路设计
2设计仿真文件,进行软件验证
3通过下载线下载到实验板上进行验证
[实验报告要求]
1写出VHDL程序并加以详细注释
2给出软件仿真结果及波形图
3通过下载线下载到实验板上进行验证并给出硬件测试结果4写出学习总结。

verilog计数器设计原理

Verilog计数器设计原理1. 介绍计数器是一种常见的数字电路,用于计算和记录事件的数量。

在数字系统中,计数器通常用于生成时钟信号、控制状态机、实现频率分频等应用。

Verilog是一种硬件描述语言,可以用于设计和仿真数字电路。

本文将详细介绍与Verilog计数器设计相关的基本原理。

2. 计数器的基本概念计数器是一种能够在输入脉冲信号的作用下进行累加或递减操作的数字电路。

它通常由触发器和逻辑门组成,触发器用于存储和传递数据,逻辑门用于控制触发器的工作状态。

2.1 同步计数器同步计数器是通过时钟信号来同步各个触发器的状态转换,以实现数据的累加或递减操作。

它包含一个时钟输入端(CLK)和一个复位输入端(RST)。

2.1.1 同步正向计数器同步正向计数器是最简单的同步计数器之一,它能够在每个上升沿时钟信号到达时进行累加操作。

2.1.1.1 原理同步正向计数器由多个触发器和逻辑门组成,其中每个触发器都有一个时钟输入端和一个复位输入端。

当时钟信号的上升沿到达时,触发器的状态将根据输入信号进行更新。

具体的原理如下:1.初始化:将计数器的初始值设置为0。

2.时钟边沿检测:当时钟信号的上升沿到达时,进入下一步操作。

3.累加操作:根据触发器的当前状态进行累加操作。

如果触发器为0,则变为1;如果触发器为1,则变为0。

4.检测溢出:如果最高位触发器由1变为0,则表示计数溢出,需要将其他低位触发器进行进位操作。

2.1.1.2 Verilog代码示例以下是一个4位同步正向计数器的Verilog代码示例:module synchronous_counter(input wire clk,input wire rst,output wire [3:0] count);reg [3:0] count;always @(posedge clk or posedge rst)beginif (rst)count <= 4'b0000;elsecount <= count + 1;endendmodule2.1.2 同步递减计数器同步递减计数器是同步正向计数器的一种扩展,它能够在每个上升沿时钟信号到达时进行递减操作。

10进制计数器的verilog设计

Lab6 10进制计数器吴晓鸣五班U2011138401.实验目的a. 使用Verilog语言实现10进制计数器设计。

b. 做出仿真波形。

c. 使用DE0开发板下载、验证。

2.实验内容●编写十进制计数器的代码,烧录到DE0中●用LED灯显示计数3.代码分析module abc(EN,CP,CR,Q);input EN,CP,CR;//三个输入端口output [3:0]Q;//四个输出端口reg[3:0]Q;always @(posedge CP or negedge CR)//当CP为上升沿或CR为下降沿if(~CR)Q=4'b0000;//清零开关else if(EN)//使能开关beginif(Q>=4'b1001) Q<=4'b0000;//当Q的值大于等于9,跳到0else Q<=Q+1'b1;endelse Q<=Q;endmodule4.实验步骤●新建一个工程,选择相应的实验板型号,创建一个Verilog HDL文件,输入程序。

●分析并编译程序,设置开发板引脚。

●连接实验板,烧入程序。

5. 实验结果的测试和分析a.编译代码:b.仿真波形c. 下载到DE0实验板上:设置引脚后,LED灯有规律的闪动,到9后,跳回0.6.实验总结通过这个实验,我了解了计数器与分频器的基本原理,熟悉了怎样用LED和verilog 来实现10进制的计数器,并用DE0显示实验结果。

7. 参考文献[1]康华光.电子技术基础(数字部分)北京:高等教育出版社,2006.[2]罗杰.Verilog HDL与数字ACIC设计基础武汉:华中科技大学出版社,2008.。

EDA实验二 含异步清零和同步使能的十进制加减法计数器

EDA实验二 含异步清零和同步使能的十进制加减法计数器一、实验目的1.了解加减计数器的工作原理。

2.进一步熟悉QUARTUSII 软件的使用方法和VHDL 输入。

3.熟悉仿真时序设定。

二、实验设备1.PC机 一台;四、实验内容完成一个0~99计数器,有四个输入信号:复位reset、使能enable、时钟clk和加减选择sel,三路输出信号:计数值、进位和借位信号。

要求每来一个时钟信号,加或减1(sel=‘0’时执行加,sel=‘1’时执行减);计数值为99时再加1,输出进位信号,并且计数值归零;计数值为0时再减1,输出借位信号,并且计数值变成99(即0~99循环计数);复位信号reset有效时(低电平有效)计数值清0,使能信号enable有效时(高电平有效)计数器才进行工作,否则不进行累加或累减。

五、实验步骤1.打开QUARTUSII 软件,新建一个VHDL文件。

2.输入程序代码,点击保存时,系统会提示建立一个新的工程(Project),按照QUARTUSII的提示建立好工程;3.按照实验原理和自己的想法,在VHDL 编辑窗口调整完成VHDL 程序;4.对自己编写的VHDL 程序进行编译,对程序的错误进行修改;5.进行仿真,附录:电路实体定义可参照如下:ENTITY counter ISPORT( clk, reset, enable ,sel : IN STD_LOGIC; --定义时钟、异步复位、同步使能、选择信号cq : OUT STD_LOGIC_VECTOR(6 downto 0); --计数值c1out : OUT STD_LOGIC; --进位信号c2out : OUT STD_LOGIC --借位信号);END counter;VHDL程序代码如下:LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY counter ISPORT( clk, reset, enable ,sel : IN STD_LOGIC; --定义时钟、异步复位、同步使能、选择信号cq : OUT STD_LOGIC_VECTOR(6 downto 0); --计数值c1out : OUT STD_LOGIC; --进位信号c2out : OUT STD_LOGIC --借位信号);END counter;ARCHITECTURE counter99 OF counter ISBEGINPROCESS(clk, reset, enable ,sel)VARIABLE cot :STD_LOGIC_VECTOR(6 downto 0);BEGINIF reset='0' THEN cot:=(OTHERS=>'0');ELSIF clk'EVENT AND clk ='1' THENIF enable='1' THENIF sel='0' THEN c2out<='0';IF cot<99 THEN cot:=cot+1;c1out<='0';ELSE cot:=(OTHERS=>'0');c1out<='1';END IF;ELSIF sel='1' THEN c1out<='0';IF cot>0 THEN cot:=cot-1;c2out<='0';ELSE cot:="1100011";c2out<='1';END IF;END IF;END IF;END IF;cq<=cot;END PROCESS; END counter99;仿真结果如下:。

含异步清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)beginif (!rst) q1<=0;else if(en)beginif (!load) q1<=data;else if(q1<9) q1<=q1+1;else q1<=4'b0000;endendalways @(q1)if (q1==4'h9) cout= 1'b1;else cout= 1'b0;endmodule60位计数器文本输入: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) beginif(!RST) Q1<=0;else if (EN) beginif (!LOAD) Q1<=DATA;else if (Q1<9) Q1<=Q1+1;else Q1<=4'b0000;endendalways @(Q1)if (Q1==4'h9) COUT1=1'b1;elseCOUT1=1'b0;always @(negedge COUT1 or negedge RST)beginif(!RST) Q2<=0;else if (EN) beginif (!LOAD) Q2<=DATA;else if (Q2<5) Q2<=Q2+1;else Q2<=4'b0000;endendalways @(Q2)if ((Q1==4'h9)&&(Q2==3'h5)) COUT2=1'b1;elseCOUT2=1'b0;endmodule60位计数器图形输入:四.实验步骤1、新建一个名称为CNT10的工程,并在该文件夹中新建一个CNT10.v的文件。

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

电子设计自动化实验报告(二)学院:电气学院班级:电子122班姓名:覃思远
一、实验题目:带有异步复位、同步计数使能和可预置型十进制计数器的verilog设计。

二、实验目的:讨论学习经典数字计数器的Verilog描述方法和相关语法。

三、实验程序:module CNT10(CLK,RST,EN,LOAD,COUT,DOUT,DATA);
input CLK,EN,RST,LOAD;
input [3:0] DA TA;
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)begin
if (Q1==4'h9) COUT = 1'b1;
else COUT = 1'b0;end
endmodule
四、实验仿真结果:
五、仿真结果分析:
(1)RST在任意时刻有效时,如CLK非上升沿时,计数也能清0。

(2)计数器正常计数到RST=0时,4位输入数据DA TA被清零,之后在LOAD=1后计数器重新计数,如图所示计数从0000加载到0100的时序。

计数到9时,COUT输出进位1。

(3)当EN=1,LOAD=1,RST=1时,计数正常进行,在计数数据等于9时进位输出高电平。

六、硬件下载设置及测试过程:根据板子给定的引脚锁定图,选定相应的硬件把程序中的输入输出端和板子的相应引脚给锁定,编译并下载程序,定好DA TA,选择合适的CLK,手动改变EN和LOAD的值,观察实验现象看是否符合程序的结果。

七、总结:通过对带有异步复位、同步计数使能和可预置型十进制计数器的verilog设计,我对verilog描述方法和相关语法有了一个较为深入的认识。

这将让我对之后课程的学习和深入探讨提供一个基础,能更好地学习EDA这门课程。

相关文档
最新文档