模可控计数器的设计
模可变计数器设计(Verilog语言)解答

模可变计数器设计(一)实验目的1、进一步熟悉实验装置和Quartus n软件的使用;2、进一步熟悉和掌握EDA 设计流程;3 、学习简单组合、时序电路的EDA 设计;4、学习计数器中二进制码到BCD 码的转换技巧;5、学习实验装置上数码管的输出方法。
(二)设计要求完成设计、仿真、调试、下载、硬件测试等环节,在EDA 实验装置上实现模可变计数器功能,具体要求如下:1 、设置一个按键控制改变模值,按键按下时模为10-99 之间(具体数值自行确定)的数,没按下时模为100-199 之间(具体数值自行确定)的数;2、计数结果用三位数码管十进制显示。
(三) 主要仪器设备3、微机 1 台4、QuartusII 集成开发软件 1 套5、EDA 实验装置 1 套(四) 实验步骤主要有三个模块1:一个模20 和模119 的计数器2:数码管的显示3:BCD 的调整源程序:module count (clk,m,en,rst,a,sel,SG,d);input clk,m,en,rst;output [7:0] SG;output [2:0] sel;output a;(* synthesis, keep *) reg clk1;(* synthesis, keep *) wire [3:0] gw,sw,bw;/*(* synthesis, keep *) */reg [3:0]a;reg [11:0] q;reg [11:0] model;reg [7:0] cnt,SG;reg [2:0] sel;reg [0:0]d;output [0:0]d;always @(posedge clk) begin cnt=cnt+1;if (cnt==200) begin clk1=1'b1; cnt=0; endelse clk1=1'b0; //200 分频,CLK 为数码管扫描频率,CLK1 为计数频率if (sel<2) sel=sel+1; else sel=0; end //sel 为数码管选择always @(sel) begincase (sel)0: a=bw; //0 数码管为百位1: a=sw; //1 数码管为十位2: a=gw; //2 数码管为个位default: a=0;endcasecase (a)0:SG<=8'b00111111; 1:SG<=8'b00000110;2:SG<=8'b01011011; 3:SG<=8'b01001111;4:SG<=8'b01100110; 5:SG<=8'b01101101;6:SG<=8'b01111101; 7:SG<=8'b00000111;8:SG<=8'b01111111; 9:SG<=8'b01101111; //8 段译码值default: SG=8'b11111111;endcase endalways @(m)if (m) model=12'b000000100000; // 模值20else model=12'b000100011001; // 模值119assign gw=q[3:0];assign sw=q[7:4];assign bw=q[11:8];always @(posedge clk1,negedge rst)beginif (!rst) q=0;else if (en)beginif (q<model)beginif (gw==9) begin q=q+7; if (sw==9) q=q+96; end //BCD 调整else q=q+1;endelse q=0;endendalways @(q)if(qvmodel) d<=0; else d<=1; endmodule波形仿真:iimulatioin WaveformsSimulation sode : TillingA.B Master Time Sar19L9 ns ■[POinler: 39.3^1 us Imeival:39.32 us Stan :End:he. 14 us 37.. 42 UH 33. 7 us39.9B LLS4k 26 us54 us 4X B2 usP 1 i111■Clk1是计数频率,每来一个 clk1信号q 计数一次Simula ion Wa^efor™ Sinulatlon lode: Tiling如图所rst=1有效时开始计数 clk 为扫描频率sel=0时数码管显示百位 a=0 sel=1时数码管显示十位 a=1 sel=2时数码管显示个位 a=3 m=1模20计数器 m=0模119计数器管脚分配:* I HI Ik * Jij19.3ns J hRoirter.6fl.H us Interval.68.09 UE Slarl End.lane<>0□ S&elk<>1B clkl曲+ 0-L玮tT IF Len^1.nCH- 1±1 sei尬1.田Q B i辭El 勿u 3.dM68.14 us63.16 us ■6E. 18 usI63.22 us 68. 24 usW [1] X [3]连[01 X [1] X [3]迪[0] X [1] X [3] ® [o] X [1] X [3]址[0] II :MasierTiiTiB Bar.68.12 usIIISG[0] SG[1] SG[2] SG[3] SG[4] SG[5] SG[6] SG[7] clkPIN_F13PIN_F14PIN_F15PIN_E15PIN_F16PIN_F17PIN_E18PIN_F18 PIN_C13en PIN_H8m rst sel[0] sel[1] sel[2] d[0] PIN_J9PIN_C5PIN_G18PIN_G17PIN_G16 PIN_G13(五)实验心得本实验主要是三大模块的编写,第一次的实验在老师给的参考代码下进行的,不过错误依然很多,主要有几个重点药掌握,一是首先要编写出能够计数的模块,用m 来控制模值的变化m=1 时模值为20 m=0 时模值为119;二是计数模块都是二进制计数的,而要在数码管上显示计数的话就必须进行BCD 调整,并且q 是一个是十二位的寄存器,通过把gw=q[3:0]; sw=q[7:4]; bw=q[11:8] 赋值的方法;一个个的显示在数码管上,由于clk 的频率比较快,所以可以看到三位数码管显示的值,我觉得管脚分配也是比较关键的!一开始我就把个位和百位显示的值搞反了序列信号发生和检测器设计(一)实验目的1、进一步熟悉EDA实验装置和Quartus n软件的使用方法;2 、学习有限状态机法进行数字系统设计;3、学习使用原理图输入法进行设计。
实验二:模可变计数器

南昌大学实验报告学生姓名:刘志强学号:6100409222 专业班级:电子091班实验类型:验证□综合□设计■创新□实验日期:实验成绩:实验二模可变计数器设计(模23/模109)一、设计思路/原理图数字电路以前学过模值计数器的设计,而这个实验只是在原类型题加了一个模值转换的设置,再加上要求用数码管显示,所以必须把计数结果转换成BCD码,所以干脆直接使用BCD码进行模值控制。
二、实验程序(程序来源:网络)library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity cnt109 isport(clk,rst,en,M:in std_logic;cq,cqq,cqqq: out std_logic_vector (3 downto 0)) ;end cnt109;architecture behav of cnt109 isbeginprocess(clk,rst,en,M)variable cq1:std_logic_vector (11 downto 0);variable Z:std_logic_vector (11 downto 0);begincase M iswhen '0' => Z:="000000100010";when '1' => Z:="000100001000";end case;if rst='1' then cq1:=(others=>'0');elsif clk'event and clk='1' thenif en='1' thenif cq1<Z thenif cq1(7 downto 0) =153 then cq1:=cq1+103;elsif cq1(3 downto 0)=9 then cq1:=cq1+7;else cq1:=cq1+1;end if;else cq1 :=( others =>'0') ;end if;end if;end if;cq<=cq1( 3 downto 0);cqq<=cq1 ( 7 downto 4 ) ;cqqq<=cq1 ( 11 downto 8);end process;end behav转化成可调用的元:;、七段动态译码程序如下:LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY DECL7S ISPORT(D:IN STD_LOGIC_VECTOR(3 DOWNTO 0);LED7S:OUT STD_LOGIC_VECTOR(7 DOWNTO 0)); END DECL7S;ARCHITECTURE one OF DECL7S ISBEGINPROCESS(D)BEGINCASE D ISWHEN "0000"=>LED7S<="00111111";WHEN "0001"=>LED7S<="00000110";WHEN "0010"=>LED7S<="01011011";WHEN "0011"=>LED7S<="01001111";WHEN "0100"=>LED7S<="01100110";WHEN "0101"=>LED7S<="01101101";WHEN "0110"=>LED7S<="01111101";WHEN "0111"=>LED7S<="00000111";WHEN "1000"=>LED7S<="01111111";WHEN "1001"=>LED7S<="01101111";WHEN OTHERS=> NULL;END CASE;END PROCESS;END ARCHITECTURE;它的模块图如下:顶层文件:对文件保存并进行编译仿真,在验证仿真正确后进行管脚绑定如下图,然后进行下载测试。
可控计数器的设计

可控计数器的设计(总11页)--本页仅作为文档封面,使用时请直接删除即可----内页可以根据需求调整合适字体及大小--《可编程器件》课程设计报告课题:可控计数器的设计班级学号学生姓名专业电子科学与技术系别电子信息工程系指导老师淮阴工学院电子与电气工程学院2014年11月可控计数器的设计一、设计目的《可编程器件》课程设计是一项重要的实践性教育环节,是学生在校期间必须接受的一项工程训练。
在课程设计过程中,在教师指导下,运用工程的方法,通过一个简单课题的设计练习,可是学生通过综合的系统设计,熟悉应用系统的是设计过程、设计要求、完成的工作内容和具体的设计方法,了解必须提交的各项工程文件,也达到巩固、充实和综合运用所学知识解决实际问题的目的。
通过课程设计,应能加强学生如下能力的培养:(1)独立工作能力和创造力;(2)综合运用专业及基础知识,解决实际工程技术问题的能力;(3)查阅图书资料、产品手册和各种工具书的能力;(4)工程绘图的能力;(5)编写技术报告和编制技术资料的能力。
二、设计要求① 1、设计一个五进制的计数器,由两个控制键SEL控制不同的计数方式② 2、当SEL=00时,按0、1、2、3、4、0、1、2,3、4···顺序计数③ 3、当SEL=01时,按0、2、4、6、8、0、2、4、6、8···顺序计数④ 4、当SEL=10时,按1、3、5、7、9、1、3、5、7、9···顺序计数⑤ 5、当SEL=11时,按5、4、3、2、1、5、4、3、2、1···顺序计数⑥ 6、由数码管分别译码显示控制信号和计数状态,分别用3 位数码管动态显示⑦ 7、给出VHDL语言的源程序三、一般设计要求(1)独立完成设计任务;(2)绘制系统硬件总框图;(3)绘制系统原理电路图;(4)制定编写设计方案,编制软件框图,完成详细完整的程序清单和注释;(5)制定编写调试方案,编写用户操作使用说明书;(6)写出设计工作小结。
实验一 模可变计数器

南昌大学实验报告学生姓名:柳宇航学号:6102113025专业班级:通信工程中兴131班实验类型:□验证□综合□设计□创新实验日期:2015.10.22实验成绩:实验一模可变计数器的设计(一)实验要求完成设计、仿真、调试、下载、硬件测试等环节,在EDA实验装置上实现模可变计数器功能,具体要求如下:1、设置一个按键控制改变模值,按键按下时模为10-99之间(具体数值自行确定)的数,没按下时模为100-199之间(具体数值自行确定)的数;2、计数结果用三位数码管十进制显示。
(二)实验步骤1.选定M=0时,实现模值为17的计数;M=1时,实现模值为119的计数。
2.建立工作库文件夹,输入计数器的Verilog代码并存盘。
3.选目标器件CycloneII中的EP2C35F672C8并编译。
4.建立仿真波形文件,设置仿真结束时间和输入条件,进行波形仿真。
图1仿真波形的建立图2M=0时模17计数仿真M=0时,计数到16,灯亮M=1M=0复位M=1时,计数到118,灯亮图3M=1时模119计数仿真波形分析:当RST为高电平时,计数清零。
当RST为低电平,使能位EN为高电平时,开始计数:模控制位M为低电平时,则计数器记到16时归0后重新计数,实现模为17的计数功能;模控制位M为高电平时,则计数器记到118时归0后重新计数,实现模为119的计数功能。
当EN 为低电平时,暂停计数。
5.管脚分配clk PIN_C13en PIN_A5m PIN_B5rst PIN_A6sel[0]PIN_G18sel[1]PIN_G17sel[2]PIN_G16SG[0]PIN_F13SG[1]PIN_F14SG[2]PIN_F15SG[3]PIN_E15SG[4]PIN_F16SG[5]PIN_F17SG[6]PIN_E18SG[7]PIN_F18d[0]PIN_H106.下载测试。
下载到实验箱上测试,下推K7(M=0),可以从实验箱数码管观察到0~16模17计数。
模M的可逆计数器

西安邮电学院FPGA实验报告-模M可逆计数器系部名称:电工院学生姓名:何慧敏(28)(04084041)专业名称:微电子班级:0802模M的可逆计数器的设计一、实验目的本实验实现模M可逆计数器的设计仿真,M为参数,完成RTL的设计和功能仿真。
二、功能定义模M可逆计数器实现的功能是:此计数器可以实现任意模M的可加可减的计数器。
任意模M定义为参数,可以通过改变M的值来实现所计的数;而可逆计数器指的是这个计数器通过某一输入来实现可加可减的计数。
三、端口说明四、时序波形上图为计数器实现加运算的计数波形上图为计数器实现减运算的计数波形五、模块框图六、仿真验证针对本实验的功能要求,我用V erilog仿真程序对主模块进行实例化来仿真验证并输出波形。
通过验证,与预想结果一致。
当in为1时,实现减法计数器;当in=0时,实现加法计数器。
七、V erilog 代码主模块:module jishu(clk,load,in,count);input clk,in,load;output count;parameter M=4;reg [M:0] count;always @(posedge clk or posedge load)if(in)beginif(load)count<=M-1;elsebeginif(count)count<=count-1;elsecount<=M-1;endendelsebeginif(load)count<=0;elsebeginif(count!=(M-1))count<=count+1;elsecount<=0;endendendmodule激励模块:module stimulate;reg clk,in,load;wire count;jishu a1(.clk(clk),.in(in),.load(load),.count(count)); initialbeginclk=1'b0;forever #5 clk=~clk;endinitialbeginin=1'b0;#200 in=1'b1;endinitialbeginload=1'b1;#8 load=1'b0;#125 load=1'b1;#133 load=1'b0;endendmodule八、设计及仿真环境设计环境及仿真环境:modelsim。
基于单片机的可控计数器设计毕业设计

目录摘要 (1)关键词 (1)ABSTRACT (2)KEYWORDS (2)1 引言 (3)1.1数字单片机的技术发展 (3)1.2以单片机为核心的嵌入式系统 (4)1.3本研究课题的发展趋势 (5)2 整体设计方案 (6)2.1单片机的选择 (6)2.2单片机的基本结构 (7)3 计时器的硬件设计 (10)3.1最小系统设计 (10)3.2LED显示电路 (13)3.3键盘控制电路 (14)4 计时器的软件设计 (16)4.1系统软件设计流程图 (16)4.2计时器的原理图 (19)5 系统仿真 (20)5.1PROTUES软件介绍 (20)5.2可控计时器PROTUES仿真 (20)6 调试与功能说明 (21)6.1系统性能测试与功能说明 (21)6.2系统时钟误差分析 (21)6.3软件调试问题及解决 (21)结论 (22)参考文献 (23)致谢 (24)附录 (25)摘要单片机体积小,功耗小,价格低,用途灵活,无处不在,属专用计算机。
是一种特殊器件,需经过专门学习方能掌握应用,应用中要设计专用的硬件和软件。
近年来,单片机以其体积小、价格廉、面向控制等独特优点,在各种工业控制、仪器仪表、设备、产品的自动化、智能化方面获得了广泛的应用。
与此同时,单片机应用系统的可靠性成为人们越来越关注的重要课题。
影响可靠性的因素是多方面的,如构成系统的元器件本身的可靠性、系统本身各部分之间的相互耦合因素等。
其中系统的抗干扰性能是系统可靠性的重要指标。
计数器是一个用以实现计数功能的时序部件,它不仅可用来计数,还常用作数字系统的定时、分频和执行数字运算以及其它特定的逻辑功能。
单片机在计数器领域的应用也十分广泛,计数器种类很多,根据构成计数器中各触发器的时钟脉冲引入方式,可分为同步计数器和异步计数器。
根据计数制的不同,可分为二进制计数器和非二进制计数器。
根据计数的增减趋势,又分为加法、减法和可逆计数器。
还有可预置数和可编程序功能计数器等等。
数电设计任意模值的计数器..

数电设计任意模值的计数器..第一篇:数电设计任意模值的计数器..课程名称:数字电子技术基础题目:设计任意模值的计数器院(系): xxxxxx 专业班级: xxxxxxxx 姓名: xxx 学号: xx 指导教师: xx2014年1月3日课程设计(论文)任务书1、课程设计(论文)题目:设计任意模值的计数器。
(模35计数器)2、本次课程设计(论文)应达到的目的:a)熟悉74LS90计数器的基本功能;b)掌握综合应用理论知识和中规模集成电路设计方法;c)掌握调试及电路主要技术指标的测试方法;d)实现用74LS90计数器输出8421BCD码模35置9计数器; e)作出模拟仿真电路图,完成本次课程设计。
3、本次课程设计(论文)任务的主要内容和要求主要内容:(1)通过查阅资料,了解74LS90计数器的功能和各个引脚的作用;(2)利用两片中规模集成电路计数器74LS90,实现模35置9计数器,其计数范围在00——34;课程设计要求:(1)独立完成本次课程设计的主要内容;(2)设计出仿真电路具有清零、预置数、停止等功能;预置数为99;(3)调试结果,分析调试中发现的问题及故障排除方法;(3)将结果输出到仿真电路图的晶体管上,显示出来;(4)写出设计总结报告。
摘要Multisim 11.0提供了丰富的元器件。
这些元器件按照不同的类型和种类分别存放在若干个分类库中。
这些元件包括现实元件和虚拟元件计数器是一种最简单的基本运算,计数器在数字系统中主要是对脉冲信号个数进行计数,以实现测量、计数和控制功能,同时兼有分频的功能。
计数器按计数进制分有二进制计数器,十进制计数器和任意进制计数器;按技术单元中触发器所接受计数脉冲和翻转顺序分有异步计数器、同步计数器;按计数供能分忧加法计数器,减法计数器,可逆计数器等。
本次课程设计,是要我利用MULTISIM 11.0仿真模拟软件,根据设计要求设计利用74LS90计数器实现8421BCD码的异步置9模35加法计数器,了解计数器的工作原理。
模可变计数器设计

实验二模可变计数器设计一、实验目的(1) 掌握关于简单数字电路的设计和静态数码管的设计。
(2)熟悉VHDL中进程语句的使用。
(3)掌握数码管的显示。
二、实验内容与要求(1)设计设置一位控制位M,要求M=0:模23计数;M=1:模109计数。
(2)计数结果用静态数码管显示,显示BCD码。
(3)给出此项设计的仿真波形。
三、设计原理(1)计数器能够计数的前提就是在使能端有效时,因此设计了en作为输入信号。
(2)计数器应该还要有异步清零端,因此设计了rst作为一个输入信号。
另外因为这是模可变的计数器,因此还需要m作为一个输入信号控制计数的模(3)计数器的基本工作原理是在CP:时钟脉冲输入端,每个上升沿到来时,计一个数,即自身加一,因此设计了计数的变量mmm(4)若是X模,则应该在小于X时计数,一旦记到X时,应该输出一个进位,因此需要设计一个变量limit作为参量,只有在小于limit时才可以计数,否则就应该清零。
又由于在模切换时,要求只要小于22或108就可以计数,因此limit要赋予不同的值(由m控制),且在是否执行加一前进行判断。
(5)因为一个静态数码管需要四位输出,最大计数是108,要用三个静态数码管,因此mmm要设计成一个std_logic_vector(11 downto 0)共12位,来对应三个数码管的输出。
(6)因为std_logic_vector(11 downto 0)这是二进制的加法,因此不能直接显示,否则就出现错误了,因此涉及到了二进制转换为十进制。
当低八位为10011010,前四位与后四位分别加6,即01100110;若低四位出现1010,要加6,即0110,进行调整。
(7)计数器的加一和调整是逻辑上是不同条件的相与,因此用到if语句。
四、实验器材PC机,试验箱,quartus软件五、实验程序library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity count isport(clk,rst,en,m:in std_logic;m1,m2,m3:out std_logic_vector(3 downto 0);cout:out std_logic);end count;architecture behav of count isbeginprocess(clk,rst,en,m)variable limit:std_logic_vector(11 downto 0); ---limit用来控制是否小于22或108variable mmm:std_logic_vector(11 downto 0);--mmm用来计数beginif m='0' then limit:="000000100010"; ---给limit赋值,为m=0时为22,else limit:="000100001000"; ---m=1时为108end if;if rst='1' then mmm:=(others=>'0'); ----异步清零elsif clk'event and clk='1' then ----判断时钟上升沿if en='1' then ----判断使能端if mmm<limit then mmm:=mmm+"000000000001";---计数器加一if mmm(7 downto 0)="10011010"then mmm:=mmm+"000001100110";elsif mmm(3 downto 0)="1010"then mmm:=mmm+"000000000110";end if; ---进行加六调整else mmm:=(others=>'0');end if;end if;end if;if mmm=limit then cout<='1'; ---计数值到达模值时输出else cout<='0';end if;m1(3 downto 0)<=mmm(3 downto 0);m2(3 downto 0)<=mmm(7 downto 4);m3(3 downto 0)<=mmm(11 downto 8); ---数码管输出显示end process;end;六、实验步骤(1)建立工作库文件夹,输入设计项目原理图或VHDL代码并存盘。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
杭州电子科技大学
实验报告
实验课程名称EDA技术
实验序号3
实验内容模可控计数器的设计班级10047812
姓名张学涌
学号10047855
指导教师黄继业
二○一一年十一月十日
实验目的与要求
实验目的:进一步学习quartus的文本设计,仿真,测试,以及硬件下载测试;
实验名称:模可控计数器的设计
实验原理
可用并行预置的加法器实现;将计数进位与预置数加载输入信号端或计数复位端相接,当计数值溢出时,在下一时钟预置的值加载进计数器,然后计数器再从这个预置数重新计数,从而实现模可控的计数器;
实验内容
模可控计数器的文本编辑如图:
仿真后的波形图为:
由图可以知道,几乎没有毛刺。
这是一个8位的计数器,预置数为F1,当计数到FF 的时候,出现溢出,同一时刻LD(keep属性)变成1,。
到下一时刻的时候,计数器加载预置数,即F1,同一时刻PM变成1,然后计数器再从F1 重新计数,直到FF时又重新加载;
仿真后的RTL图为:
资源利用情况:
由图可以看到资源利用得非常少;
总结与体会
通过模可控器的设计,我懂得如何设计计数器的思路和原理,收获很深刻!。