VerilogHDL设计同步模10计数器

合集下载

VerilogHDL十进制计数器实验Quartus非常详细的步骤

VerilogHDL十进制计数器实验Quartus非常详细的步骤

实验二十进制计数器实验该实验将使用Verilog 硬件描述语言在DE2-70 开发平台上设计一个基本时序逻辑电路——1 位十进制计数器。

通过这个实验,读者可以了解使用Quartus 工具设计硬件的基本流程以及使用Quartus II 内置的工具进行仿真的基本方法和使用SignalTap II 实际观察电路运行输出情况。

SignalTap II 是Quartus 工具的一个组件,是一个片上的逻辑分析仪,可以通过JTAG 电缆将电路运行的实际输出传回Quartus 进行观察,从而省去了外界逻辑分析仪时的很多麻烦。

实验步骤3.1建立工程并完成硬件描述设计1. 打开Quartus II 工作环境,如图3-1 所示。

图3-1 Quartus II工作环境界面2. 点击菜单项File->New Project Wizard 帮助新建工程。

参看图3-2。

图3-2 选择New Project Wizard打开Wizard 之后,界面如图3-3 所示。

点击Next,如图3-3。

第23 页共208 页图3-3 New Project Wizard界面3. 输入工程工作路径、工程文件名以及顶层实体名。

这次实验会帮助读者理解顶层实体名和工程名的关系,记住目前指定的工程名与顶层实体名都是Counter10,输入结束后,如图3-4 所示。

点击Next。

图3-4输入设计工程信息4. 添加设计文件。

界面如图3-5 所示。

如果用户之前已经有设计文件(比如.v 文件)。

第24 页共208 页那么再次添加相应文件,如果没有完成的设计文件,点击Next 之后添加并且编辑设计文件。

图3-5添加设计文件5. 选择设计所用器件。

由于本次实验使用Altera 公司提供的DE2-70 开发板,用户必须选择与DE2-70 开发板相对应的FPGA 器件型号。

在Family 菜单中选择Cyclone II,Package 选FBGA,Pin Count 选896,Speed grade 选6,确认Available devices 中选中EP2C70F896C6,如图3-6。

Verilog— 同步计数器

Verilog— 同步计数器

西安邮电學院基于Verilog的HDL设计基础实验报告系部名称:通信与信息工程学院学生姓名:专业名称:通信工程班级:学号:时间:2010年12月11日实验题目同步计数器一、实验内容对使用JK主从触发器来设计的同步计数器的设计与验证;再对其进行综合生成网表文件;然后进行后仿真。

二、技术规范输入引脚:j,k,clock,clear;输出引脚:Q,Qbar。

技术规范: 前面是JK主从触发器,后边是基本触发器,JK主从触发器在clear和clock控制下变化,而输出Q跟随主触发器的变化而变化。

三、实验步骤1、在modulesim软件中进行JK主从触发器来设计的同步计数器的设计与验证,直到运行结果全部正确;2、在Quartus软件中对刚刚完成的计数器进行综合,生成网表文件;3、在modulesim软件中对计数器进行进行后仿真。

四、源代码1:设计模块:module counter(j,k,clock,clear,q,qbar);output [3:0] q,qbar;input clock,clear;input j,k;wire a,b,y,ybar,c,cbar,d;assign cbar = ~clock;assign a = ~(j & clear & clock & qbar),b = ~(k & clock & q),y = ~(a & ybar),ybar = ~(clear & b & y),c = ~(y & cbar),c = ~(ybar & cbar);assign q = ~(c & qbar),qbar = ~(d & clear & q);endmodule2:激励模块module simulate;reg clock,clear;reg j,k;wire[3:0] q,qbar;initial$monitor ($time,"Clear=%b,j=%b,k=%b,q=%b\n",clear,j,k,q); counter co(j,k,clock,clear,q,qbar);initialbeginclear=1'b1;j= 1'b1; k= 1'b1;#30 clear=1'b0;j= 1'b0; k= 1'b1;#40 clear=1'b1;j= 1'b1; k= 1'b0;#50 clear=1'b0;j= 1'b0; k= 1'b0;endinitialbeginclock=1'b0;forever #10 clock=~clock;endinitialbegin#500 $finish;endendmodule五、仿真结果及分析五、调试情况,设计技巧及体会1、程序调试:程序一开始设计完毕时出现错误,检查到小问题修改后,运行成功。

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框图:。

实验四-模10计数器与10分频电路

实验四-模10计数器与10分频电路

●实验名称:利用VerilogHDL设计一个模10加法计数器和一个时钟10分频电路●实验目的:1.熟悉用可编程器件实现基本时序逻辑电路的方法。

2.了解计数器的Verilog描述方法,以及偶数分频的思路与原理。

●预习要求:1.回顾数字电路中加法计数器的相关知识。

●实验说明:1.用MAX+plus II软件开发PLD器件有两种设计输入方式:原理图输入和HDL语言输入方式,或者将两者结合起来,一部分电路采用原理图,另一部分采用HDL语言。

2.加法计数器表示随着时钟脉冲的输入,计数器从0开始正向计数,直到计满规定的模值后归零,然后依次循环计数。

模10计数器表示,计数器从0000~1001循环计数。

3.时钟分频电路的功能是,对输入的时钟频率进行偶数倍的降频(倍增其周期),10分频意味着分频后产生的新时钟周期是输入时钟的20倍。

●实验内容与步骤:1.新建一个属于自己的工程目录。

2.用VerilogHDL语言方式编写一个模10加法计数器cnt_10。

3.对此计数器模块进行编译和仿真。

4.用VerilogHDL语言方式编写一个20分频模块fenpin_20,对输入时钟进行20分频处理。

5.对此分频电路进行仿真。

●实验报告要求:1.将自己绘制的电路图或者编写的VerilogHDL代码,截图或者复制到实验报告中。

2.将代码关键位置写上相应注释(可用中文)。

3.对仿真波形截图,贴到实验报告中。

●实验图表与数据:1. 模10加法计数器cnt_10的V erilog代码2. 模10加法计数器cnt_10的仿真波形:3. 20分频模块fenpin_10的Verilog代码:4. 20分频模块fenpin_10的仿真波形:。

同步可逆十进制计数器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代码实现了一个同步可逆十进制计数器。

10进制计数器的verilog设计

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.。

Verilog_HDL十进制计数器实验Quartus90非常详细的步骤

Verilog_HDL十进制计数器实验Quartus90非常详细的步骤

页 802 共 页 73 第 图击点、noitalipmoc trats>-gnissecorP 项单菜击点。件文译编全�后配分脚引成完 .22 。制控动手关开用使�波方频低出输接直法办有没板发开 07_2ED�关相 kcolc�意注 图脚引配分 63-3 图
绿个
。42V 是不 42Y 意注�63-3 图考参�一验实考 参�。]0[WS 关开接 klc�]0[YEK 接 n_tsr�]4[GDEL 接 wolfrevo �上�]0[GDEL-]3[GDEL� DEL 4 的板发开 07-2ED 到置配出输 q 的器数计将�册手导指户用 07-2ED 的供 提所据根。作操的脚引配分行进以可�后确正能功认确�后成完真仿。脚引置配 .12 果结真仿 53-3 图
为设制强 标图侧左击单�号信 n_tsr 中选。平电高续持后 sn02 低成改 n_tsr 将 .61
置设期周的钟时 72-3 图
。率比间时的占所内之期周个一在平电高指是即�比 空占是思意的 elcyc ytuD。72-3 图如�sn02 为整调期周把中框话对定设 kcolc 的出弹在 波方为改 klci 将 62-3 图
。件文计设辑编且并加添后之 txeN 击点�件文计设的成完有没果如�件文应相加添次再么那 验实器数计制进十 二验实
页 802 共 页 62 第 正户用现出会中栏签标 yhcrareiH 的 rotagivaN tcejorP 中面界 II sutrauQ�后建新成完在 结总程工建新 8-3 图
。建新成完 hsiniF 击点后认确�示所 8-3 图如�计设的前之对 核户用让结总个一成生动自会 II sutrauQ�后成完计设本基在。结总程工建新看查 .7 具工 ADE 置设 7-3 图
验实器数计制进十 二验实

verilog HDL十进制加减法计数器报告

verilog HDL十进制加减法计数器报告

十进制加减法计数器1.实验要求(1)在Modelsim环境中编写十进制加减法计数器程序;(2)编译无误后编写配套的测试程序;(3)仿真后添加信号,观察输出结果。

2.设计程序如下module decade_counter#(parameter SIZE=4)(input clock,load_n,clear_n,updown,input [SIZE-1:0]load_data,output reg [SIZE-1:0]q);always@(negedge load_n,negedge clear_n,posedge clock)if (!load_n)q<=load_data;else if (!clear_n)q<=0;else //clockif(updown)q<=(q+1)%10;elsebeginif(q==0)q<=9;elseq<=q-1;endendmodule3.测试程序如下`timescale 1ns/1nsmodule test_decade_counte;reg clock,load_n,clear_n,updown;reg [3:0]load_data;wire [3:0]q;decade_counter T1(clock,load_n,clear_n,updown,load_data,q);initialbeginclock=0;clear_n=0;#30 clear_n=1;load_n=0;load_data=7;#30 load_n=1;updown=0;#300 updown=1;#300 updown=0;#300 updown=1;#300 $stop;endalways#10 clock=~clock;always@(q)$display("At time%t,q=%d",$time,q);endmodule4.波形如下5.测试结果如下# At time 0,q= 0# At time 30,q= 7# At time 70,q= 6# At time 90,q= 5# At time 110,q= 4# At time 130,q= 3# At time 150,q= 2# At time 170,q= 1# At time 190,q= 0# At time 210,q= 9# At time 230,q= 8# At time 250,q= 7# At time 270,q= 6# At time 290,q= 5# At time 310,q= 4# At time 330,q= 3# At time 370,q= 3 # At time 390,q= 4 # At time 410,q= 5 # At time 430,q= 6 # At time 450,q= 7 # At time 470,q= 8 # At time 490,q= 9 # At time 510,q= 0 # At time 530,q= 1 # At time 550,q= 2 # At time 570,q= 3 # At time 590,q= 4 # At time 610,q= 5 # At time 630,q= 6 # At time 650,q= 7 # At time 670,q= 6 # At time 690,q= 5 # At time 710,q= 4 # At time 730,q= 3 # At time 750,q= 2 # At time 770,q= 1 # At time 790,q= 0 # At time 810,q= 9 # At time 830,q= 8 # At time 850,q= 7 # At time 870,q= 6 # At time 890,q= 5 # At time 910,q= 4 # At time 930,q= 3 # At time 950,q= 2 # At time 970,q= 3 # At time 990,q= 4 # At time 1010,q= 5 # At time 1030,q= 6 # At time 1050,q= 7 # At time 1070,q= 8 # At time 1090,q= 9 # At time 1110,q= 0 # At time 1130,q= 1 # At time 1150,q= 2 # At time 1170,q= 3 # At time 1190,q= 4 # At time 1210,q= 5# At time 1250,q= 7。

基于HDL的十进制计数器的设计(FPGA)

基于HDL的十进制计数器的设计(FPGA)

实验二:基于HDL十进制计数、显示系统设计一、实验目的:1.掌握基于语言的ISE设计全流程;2.熟悉、应用VerilogHDL描述数字电路;3.掌握基于Verilog的组合和时序逻辑电路的设计方法;4.具有数显输出的十进制计数器的设计。

二、实验原理:1.实验内容:设计具有异步复位,同步使能的十进制计数器,其计数结果可以通过七段数码,管发光二极管进行显示。

其系统原理图如下:2.十进制计数器模块端口信号说明:①输入信号:clk----计数器的时钟信号Clc——异步清零信号,当clc=1时,输出复位为0;当clc=0时,正常计数Ena——使能控制信号,当ena=1时,电路正常累加计数,否则电路不工作输出信号。

②输出信号:SUM[3:0]-------- 计数值的个位。

即,在CLK上升沿检测到SUM=9时,SUM将被置0,开始新一轮的计数。

COUT --------计数值的十位进位,即:只有在时钟CLK上升沿测到SUM=9时,COUT将被置1,其余情况下COUT=0;3.自顶向下的设计思路进行模块划分:整个系统要求设计的模块:十进制计数模块和数码管驱动模块,由于实验按键为实现按键防抖,所以在实验时候需要加入消抖模块:电源按键消抖:通常的按键所用开关为机械弹性开关,当机械触点断开、闭合时,由于机械触点的弹性作用,一个按键开关在闭合时不会马上稳定地接通,在断开时也不会一下子断开。

因而在闭合及断开的瞬间均伴随有一连串的抖动,为了产生这种现象而作的措施就是按键消抖。

三、实验过程:按照实验原理的设计思想,做出了以下设计代码:十进制计数器部分:module cnt10(clr,clk,ena,sum,cout);input clr,clk,ena;output[3:0] sum;output cout;reg[3:0] sum;reg cout;always @(posedge clk or posedge clr)beginif(clr)beginsum<=4'b0000;cout<=0;endelse if(ena)beginif(sum==4'b1001)beginsum<=4'b0000;cout <= 1;endelse if(sum<4'b1001)beginsum <= sum+4'b0001;cout<=0;endendendEndmodule数码管驱动模块代码:module led(out_y,sum);output [6:0] out_y;input[3:0] sum;reg [6:0] out_y;always @(sum)begincase(sum)4'b0000:out_y=7'b0111111;4'b0001:out_y=7'b0000110;4'b0010:out_y=7'b1011011;4'b0011:out_y=7'b1001111;4'b0100:out_y=7'b1100110;4'b0101:out_y=7'b1101101;4'b0110:out_y=7'b1111101;4'b0111:out_y=7'b0000111;4'b1000:out_y=7'b1111111;4'b1001:out_y=7'b1101111;default:out_y=7'b00000000;endcaseendendmodule消抖模块部分实验已经给出,最后综合模块代码:module int(clk_50,clk,rest,ena,out_y,cout );input clk_50,clk,rest,ena;output [6:0] out_y;output cout;wire [3:0] out;wire clk_out;wire [6:0] out_y;debounce_module u1(clk_50,rest,clk,clk_out); cnt10 u2(rest,clk_out,ena,out,cout);led u3(out_y,out);Endmodule根据实验要求综合:1.2.相应的引脚约束文件为:NET "clk" LOC = “V16” | PULLDOWN; NET "clk_50" LOC = "C9" ;NET "clr" LOC = "N17" ;NET "cout" LOC = "C11" ;NET "data_out<0>" LOC = "D5" ;NET "data_out<1>" LOC = "C5" ;NET "data_out<2>" LOC = "B6" ;NET "data_out<3>" LOC = "E7" ;NET "data_out<4>" LOC = "F7" ;NET "data_out<5>" LOC = "A4" ;NET "data_out<6>" LOC = "B4" ;NET "ena" LOC = "H18" ;NET "clk" CLOCK_DEDICATED_ROUTE=FALSE; 3.时序仿真为:十进制计数器仿真如下:最后例化后的结果为:思考题比较实验一与实验二的实验过程,说明原理图输入法与HDL输入法的不同的应用环境答:实验一中应用的是原理图完成十进制计数器的数显,工作量相对较大,需要绘制8张原理图,其中还不包括消抖模块。

FPGA—基于HDL的十进制计数器设计

FPGA—基于HDL的十进制计数器设计

基于HDL的十进制计数器设计一、实验目的1、掌握基于语言的ISE设计全流程;2、熟悉、应用VerilogHDL描述数字电路;3、掌握基于Verilog的组合和时序逻辑电路的设计方法。

4、掌握chipscope片内逻辑分析仪的使用与调试方法。

5、设计具有异步复位、同步使能的十进制计数器,其计数结果可以通过七段数码管、发光二极管等进行显示。

二、实验原理1、十进制计数器的设计即是设置一变量,当计数脉冲上升沿到来时,先判断是否为9,若是则置零,否则就进行加一操作。

将变量再进行一个译码操作输出到数码管显示即可。

图1 实验原理图2、数码管分为7 段和8 段,七段数码管由7段二极管组成。

8段数码管比起7段数码管多了一个显示小数点的LED。

数码管按发光二极管单元衔接方式分为共阳极数码管和共阴极数码管。

本实验使用共阳数码管。

它是指将一切发光二极管的阳极接到一同构成公共阳极(COM)的数码管。

共阳数码管在应用时应将公共极COM接到电源VCC 上,当某一字段发光二极管的阴极为低电平相应字段就点亮。

当某一字段的阴极为高电平相应字段就不亮。

共阳端可以作为位选端,实现动态扫描。

动态扫描即是利用了人眼睛的视觉暂留现象,以合适的频率显示每一位数码管,便会产生所有数码管是一起点亮的错觉,数码管原理图如图:图2共阳数码管示意图3、数码管显示数字与对应的输入数据的关系如表所示:0 8'hc01 8'hf92 8'ha43 8'hb04 8'h995 8'h926 8'h827 8'hf8表1 数码管显示表4、本次设计一共有11个端口:输入信号:clk -------待计数的时钟。

clr ---------异步清零信号,当clr=1,输出复位为0,当clr=0,正常计数。

ena---------使能控制信号,当ena=1,电路正常累加计数,否则电路不工作。

输出信号:q[6:0]---------驱动数码管,显示计数值的个位。

基于HDL十进制计数器设计概要

基于HDL十进制计数器设计概要

FPGA实验报告二实验名称:基于HDL十进制计数器设计姓名:学号:班级:指导老师:时间:2013年3月18日实验二:基于HDL十进制计数器设计一、实验目的1、掌握基于语言的ISE设计全流程;2、熟悉、应用VerilogHDL描述数字电路;3、掌握基于Verilog的组合和时序逻辑电路的设计方法二、实验要求1、用HDL语言设计七段显示译码电路,以及十进制加法计数器。

2、要求LED定位显示。

3、完成LED七段码波形的仿真分析4、在目标板按要求显示译码结果。

三、实验原理本次试验将完成的设计是一个具有数显输出的十进制计数器。

示意图如2.1所示。

图2.1七段数码管属于数码管的一种,是由7段二极管组成。

按发光二极管单元衔接方式分为共阳极数码管和共阴极数码管。

本实验使用共阴数码管。

它是指将一切发光二极管的阴极接到一同构成公共阴极(COM)的数码管。

共阴数码管在应用时应将公共极COM接到地线GND上,当某一字段发光二极管的阳极为高电平相应字段就点亮,当某一字段的阳极为低电平相应字段就不亮。

显示译码器,用HDL语言判断CLK的上升沿信号,每次收到一次上升沿信号,计数器的值加一并显示在数码管上,所以本次实验会将十进制计数与七段数码管的显示分别写在两个模块里面。

消抖模块,这次不用学生完成,只用在最后的top文件中调用就行。

本实验可以采用ISE软件的HDL语言描述七段数码管的功能与十进制计数功能。

完成的设计是一个具有数显输出的十进制计数器。

四、实验步骤1、设计准备(1)设计任务表述:输入信号:clk -------待计数的时钟clr ---------异步清零信号,当clr=1,输出复位为0,当clr=0,正常计数ce---------使能控制信号,当ce=1,电路正常累加计数,否则电路不工作输出信号:q[6:0]---------驱动数码管,显示计数值的个位cout -----------驱动发光二极管,显示计数值向十位的进位(2)本实验共包括3个模块:十进制计数器驱动七段数码管模块消抖模块,待计数的时钟clk输入至计数器前,先通过消抖模块。

verilog设计十进制计数器(含进位位)

verilog设计十进制计数器(含进位位)

verilog设计⼗进制计数器(含进位位)⼗进制计数器:设计要求:1、每当计数器值为4’b001时,⾃动回到4’b00002、每个时钟沿计数器值加13、进位输出carry应该与4'b1001同周期输出4、异步复位module cnt10 ( clk, rst_n, carry, cnt );input clk, rst_n;output carry;output [3:0] cnt;reg carry;reg [3:0] cnt;always @( posedge clk or negedge rst_n )beginif ( ~rst_n )begincnt <= 4'b0000;endelse if ( cnt == 4'b1001 )begincnt <= 4'b0000;endelsebegincnt <= cnt + 4'b0001;endendalways @(posedge clk or negedge rst_n)beginif(!rst_n)begincarry <= 1'b0;endelse if(cnt == 4'b1000)begincarry <= 1'b1;endelsecarry<= 1'b0;endendmoduleView Code测试程序:`timescale 1ns/1psmodule cnt10_tb();reg clk, rst_n;wire carry;wire [3:0] cnt;always #10 clk = ~clk;cnt10 cnt10_tb(.clk(clk),.rst_n(rst_n),.carry(carry),.cnt(cnt));initialbeginclk = 1'b0;rst_n = 1'b1;#10 rst_n = 1'b0;#10 rst_n = 1'b1;endendmodule波形图:在这个⼗进制计数器中,唯⼀要注意的⼀点就是进位位carry变化的时刻,如果是为了使下⼀级能正确接收到前⼀级的进位位标识,要在计数到九时使进位位有效;如上图波形所⽰。

10进制计数器verilog代码

10进制计数器verilog代码

以下是一个简单的10进制计数器的Verilog代码。

这个计数器在每个时钟周期内递增,并在计数到10后回滚到0。

verilog复制代码
module counter_10 (
input wire clk,
input wire reset,
output reg [3:0] count
);
always @(posedge clk or posedge reset) begin
if (reset) begin
count <= 4'b0000;
end else begin
count <= count + 1;
end
end
endmodule
在这个模块中,clk是时钟输入,reset是复位输入,count是4位的输出,表示当前的计数值。

在每个时钟上升沿,count都会递增。

当count达到10(即二进制的1010)时,它会被复位回0。

如果复位信号被激活,无论时钟状态如何,count都会被立即复位。

请注意,这是一个非常基础的计数器设计,没有包括一些更复杂的功能,比如预置值、异步/同步复位等。

如果你需要这些功能,你可能需要修改或扩展这个设计。

十进制减法计数器verilog代码

十进制减法计数器verilog代码

十进制减法计数器verilog代码以下是一个十进制减法计数器的Verilog代码示例:```verilogmodule Decimal_Subtractor(input wire clk,input wire rst,input wire enable,input wire [3:0] subtrahend,input wire [3:0] minuend,output wire [3:0] difference,output wire borrow);reg [3:0] difference_reg;reg borrow_reg;always @(posedge clk or posedge rst) beginif (rst) begindifference_reg <= 0;borrow_reg <= 0;end else if (enable) begindifference_reg <= minuend - subtrahend;borrow_reg <= minuend < subtrahend;endendassign difference = difference_reg;assign borrow = borrow_reg;endmodule```该代码定义了一个具有四位输入和输出的十进制减法计数器模块。

输入包括时钟信号(clk)、复位信号(rst)、使能信号(enable)、被减数(subtrahend)和减数(minuend)。

输出包括差值(difference)和借位(borrow)。

计数器在时钟上升沿时更新。

在复位信号为高电平时,计数器被重置为零。

当使能信号为高电平时,计数器将被减数减去减数,并且根据减法的结果设置差值和借位。

对于四位的十进制数减法,减法的结果是一个四位的差值和一个借位。

在减法计算完成之前,借位输出将保持不变。

差值输出将根据减法的结果更新。

VerilogHDL十进制计数器实验Quartus非常详细的步骤

VerilogHDL十进制计数器实验Quartus非常详细的步骤

实验二十进制计数器实验该实验将使用Verilog 硬件描述语言在DE2-70 开发平台上设计一个基本时序逻辑电路——1 位十进制计数器。

通过这个实验,读者可以了解使用Quartus 工具设计硬件的基本流程以及使用Quartus II 内置的工具进行仿真的基本方法和使用SignalTap II 实际观察电路运行输出情况。

SignalTap II 是Quartus 工具的一个组件,是一个片上的逻辑分析仪,可以通过JTAG 电缆将电路运行的实际输出传回Quartus 进行观察,从而省去了外界逻辑分析仪时的很多麻烦。

实验步骤3.1建立工程并完成硬件描述设计1. 打开Quartus II 工作环境,如图3-1 所示。

图3-1 Quartus II工作环境界面2. 点击菜单项File->New Project Wizard 帮助新建工程。

参看图3-2。

图3-2 选择New Project Wizard打开Wizard 之后,界面如图3-3 所示。

点击Next,如图3-3。

第23 页共208 页图3-3 New Project Wizard界面3. 输入工程工作路径、工程文件名以及顶层实体名。

这次实验会帮助读者理解顶层实体名和工程名的关系,记住目前指定的工程名与顶层实体名都是Counter10,输入结束后,如图3-4 所示。

点击Next。

图3-4输入设计工程信息4. 添加设计文件。

界面如图3-5 所示。

如果用户之前已经有设计文件(比如.v 文件)。

第24 页共208 页那么再次添加相应文件,如果没有完成的设计文件,点击Next 之后添加并且编辑设计文件。

图3-5添加设计文件5. 选择设计所用器件。

由于本次实验使用Altera 公司提供的DE2-70 开发板,用户必须选择与DE2-70 开发板相对应的FPGA 器件型号。

在Family 菜单中选择Cyclone II,Package 选FBGA,Pin Count 选896,Speed grade 选6,确认Available devices 中选中EP2C70F896C6,如图3-6。

基于HDL十进制计数、显示系统的设计说明

基于HDL十进制计数、显示系统的设计说明

****大学实验报告课程名称: FPGA技术实验名称:基于原理图的十进制计数器设计姓名: *****学号: *****班级:电子1202指导教师: ***********大学****学院制实验二基于 HDL 十进制计数、显示系统设计一、实验原理1、实验容:设计具有异步复位、同步使能的十进制计数器,其计数结果可以通过七段数码管、发光二极管等进行显示。

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

即,在 CLK 上升沿检测到 SUM=9 时, SUM 将被置0,开始新一轮的计数。

COUT ------------计数值的十位进位,即:只有在时钟 CLK 上升沿检测到 SUM=9 时,COUT 将被置 1,其余情况下 COUT=0;在设计中可以使用 always, if-else-if语句实现,设计中注意不要在两个以上的 always模块中对同一个变量进行赋值,否则会产生多重赋值源( multi-source)的问题。

基于FPGA十进制同步计数器

基于FPGA十进制同步计数器

十进制同步计数器一、实验目的1.学习十进制同步计数器的Verilog硬件设计2.学会并掌握Quartus II软件的使用3.学会并掌握modelsim仿真软件的使用二、实验原理进制计数器具有电路结构简单、运算方便等特点,但是日常生活中我们所接触的大部分都是十进制数,特别是当二进制数的位数较多时,阅读非常困难,还有必要讨论十进制计数器。

在十进制计数体制中,每位数都可能是0,1,2,…,9十个数码中的任意一个,且“逢十进一”。

根据计数器的构成原理,必须由四个触发器的状态来表示一位十进制数的四位二进制编码。

第2个计数脉冲来到后,其状态为0010。

以下类推,可以得到如表1所示的状态表。

但需注意:在第9个脉冲来到后,亦即计数器处于1001态时,低电平封住了F2的置1端,Q1的高电平又使K4=1,故第十个计数脉冲来到后,F2、F3状态不变,F1、F4同时置0,计数器跳过多余的6个状态,完成一次十进制计数循环。

表1 同步十进制加法计数器状态表为了满足十进制加法计数器的原理,本实验用Verilog程序在FPGA/CPLD 中来实现。

首先设计一个程序,程序为脉冲输入,设输出的四位码为q[3:0],十进制计数值为count,脉冲上升沿时q值+1,直到q=9时count=1,q置零重新开始计数直至下一个q=9,count=2,依次循环。

三、实验任务1.根据实验目的编写verilog程序2.将设计好的Verilog译码器程序在Quartus II上进行编译3.对程序进行适配、仿真,给出其所有信号的时序仿真波形图(注意仿真波形输入激励信号的设置)。

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

基于HDL十进制计数器设计

基于HDL十进制计数器设计

FPGA实验报告二实验名称:基于HDL十进制计数器设计姓名:学号:班级:指导老师:时间:2013年3月18日实验二:基于HDL十进制计数器设计一、实验目的1、掌握基于语言的ISE设计全流程;2、熟悉、应用VerilogHDL描述数字电路;3、掌握基于Verilog的组合和时序逻辑电路的设计方法二、实验要求1、用HDL语言设计七段显示译码电路,以及十进制加法计数器。

2、要求LED定位显示。

3、完成LED七段码波形的仿真分析4、在目标板按要求显示译码结果。

三、实验原理本次试验将完成的设计是一个具有数显输出的十进制计数器。

示意图如2.1所示。

图2.1七段数码管属于数码管的一种,是由7段二极管组成。

按发光二极管单元衔接方式分为共阳极数码管和共阴极数码管。

本实验使用共阴数码管。

它是指将一切发光二极管的阴极接到一同构成公共阴极(COM)的数码管。

共阴数码管在应用时应将公共极COM接到地线GND上,当某一字段发光二极管的阳极为高电平相应字段就点亮,当某一字段的阳极为低电平相应字段就不亮。

显示译码器,用HDL语言判断CLK的上升沿信号,每次收到一次上升沿信号,计数器的值加一并显示在数码管上,所以本次实验会将十进制计数与七段数码管的显示分别写在两个模块里面。

消抖模块,这次不用学生完成,只用在最后的top文件中调用就行。

本实验可以采用ISE软件的HDL语言描述七段数码管的功能与十进制计数功能。

完成的设计是一个具有数显输出的十进制计数器。

四、实验步骤1、设计准备(1)设计任务表述:输入信号:clk -------待计数的时钟clr ---------异步清零信号,当clr=1,输出复位为0,当clr=0,正常计数ce---------使能控制信号,当ce=1,电路正常累加计数,否则电路不工作输出信号:q[6:0]---------驱动数码管,显示计数值的个位cout -----------驱动发光二极管,显示计数值向十位的进位(2)本实验共包括3个模块:十进制计数器驱动七段数码管模块消抖模块,待计数的时钟clk输入至计数器前,先通过消抖模块。

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