模可控计数器的设计
模可变计数器设计(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代码并存盘。
EDA模可变计数器设计
实验二 模可变计数器设计一、实验目的1.熟悉EDA 技术开发流程;2.熟悉Quartes II 集成开发软件的使用;3.初步熟悉PH-1V 型实验装置的使用;二、实验要求1.学习多层次设计方法,设计一位控制为M ,使M=0;模23记数;M=1;实现109记数;结果用静态数码管显示。
三、实验设计思路本实验可以分成三部分来设计,第一部分为计数部分这里采用文本输入法设计(VHDL 语言)设计模23计数和模109计数,第二部分为功能选择,当M=0时实现模23计数。
当M=1时,模109计数。
第三部分是数码管显示部分,这也是本实验的难点。
我们知道数码管上显示的是十进制的BCD 码,因此这里必须有译码的过程。
如何将二进制输出转换成十进制的BCD 码输出是本实验的关键一步,这里有很多办法实现。
可以采用补码的方式实现,但是实现比较繁琐。
另外可以采用软件的方法实现,把个位、十位、和百位分开来显示。
在IEEE 库函数中有一个可以将整数转换成位矢量的函数conv_std_logic_vector (A,位长)。
实验流图如下:四、实验程序LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;USE IEEE.STD_LOGIC_ARITH.ALL;--转换函数库ENTITY CNTM1 ISPORT (CLK,RST,EN:IN STD_LOGIC;M:IN STD_LOGIC;--功能选择位a,b,c:OUT STD_LOGIC_VECTOR (3 DOWNTO 0));--数码显示输出END CNTM1;ARCHITECTURE behav OF CNTM1 ISsignal a1,b1,c1:std_logic_vector(3 downto 0);--信号传递输出BEGINPROCESS (CLK,RST,EN,M,a1,b1,c1)V ARIABLE N :INTEGER RANGE 0 to 1000;--控制变量BEGINIF RST ='1' THEN N:=0;--清零ELSIF CLK 'EVENT AND CLK='1' THEN –上升沿触发IF EN = '1' THENIF M='0' THEN—选择模23计数IF N<22 THEN N:=N+1;ELSE N:=0;END IF;ELSEIF N<108 THEN N:=N+1;--模109计数ELSE N:=0;a1<=conv_std_logic_vector((N /100),4);--显示百位输出b1<=conv_std_logic_vector(((N / 10) mod 10),4);--显示十位输出c1<=conv_std_logic_vector((N MOD 10),4);--显示个位输出END IF;END IF;END IF;END IF;a<=a1;b<=b1;c<=c1;END PROCESS;END behav;五、实验步骤1、建立工作库文件和编辑设计文件(1)在D盘新建一个文件夹用来保存工程文件(2)打开QuartusⅡ8.0软件,选择菜单File->New->VHDL File,点击OK后在打开的界面下输入已经设计好的程序。
(完整word版)基于VHDL的多功能可变模计数器
基于VHDL的多功能可变模计数器设计0 引言随着电子技术、计算机技术和EDA技术的不断发展,利用FPGA/CPLD进行数字系统的开发已被广泛应用于通信、航天、医疗电子、工业控制等领域。
与传统电路设计方法相比,FPGA/CPLD具有功能强大,开发周期短,投资少,便于追踪市场变化及时修改产品设计,以及开发工具智能化等特点。
近年来,FPGA/CPLD发展迅速,随着集成电路制造工艺的不断进步,高性价比的FPGA/CPLD器件推陈出新,使FPGA/CPLD成为当今硬件设计的重要途径。
在FPGA/CPLD的应用设计开发中,VHDL语言作为一种主流的硬件描述语言,具有很强的电路描述和建模能力,能从多个层次对数字系统进行建模和描述,从而大大简化了硬件设计任务,提高了设计效率和可靠性,并在语言易读性和层次化、结构化设计方面。
表现出了强大的生命力和应用潜力。
QuartusⅡ是Altera公司在21世纪初推出的FPGA/CPLD集成开发环境,是Altera公司前一代FPGA/CPLD集成开发环境Max+PlusⅡ的更新换代产品,其界面友好,使用便捷,功能强大,为设计者提供了一种与结构无关的设计环境,使设计者能方便地进行设计输入、快速处理和器件编程。
计数器是数字系统中使用最多的时序电路之一,不仅能用于对时钟脉冲计数,还可以用于分频、定时、产生节拍脉冲和脉冲序列以及进行数字运算等。
可变模计数器由于计数容量可以根据需要进行变化,为其广泛使用创造了便利。
这里在QuartusⅡ开发环境下,用VHDL 语言设计了一种具有清零、置数、使能控制、可逆计数和可变模功能的计数器。
1 基本可变模计数器设计可变模计数器是指计数/模值可根据需要进行变化的计数器。
电路符号图1所示,clk 为时钟脉冲输入端,clr为清零端,m为模值输入端,q为计数输出端。
基本可变模计数器的VHDL代码如下所示:说明:上述代码设计采用了常用的if语句结构,即“if条件句then顺序语句elsif条件句then顺序语句else顺序语句end if”结构,实现模值小于99的可变模计数。
模16的功能可变计数器
EDA考试:模16的功能可变计数器一、实验目的1、设计一个模为16的计数器,功能可变,包括不计数,减法,加法,置数。
结果由数码管显示。
2、熟练掌握ISE软件进行FPGA开发的过程以及实验箱的使用方法。
3、了解对设计电路进行功耗分析的方法。
4、了解ISE设计报告中电路资源利用率的情况分析。
5、掌握使用VHDL创建测试文件的方法。
二、实验原理模为16,控制信号为MA、MB,MA和MB为00时不计数,01时加法计数,10时减法计数,三、代码1、源代码library IEEE;use IEEE.STD_LOGIC_1164.ALL;use ieee.std_logic_unsigned.all;entity exam33 isPort ( clk : in STD_LOGIC;MA: in STD_LOGIC;MB : in STD_LOGIC;datain : in STD_LOGIC_VECTOR (3 downto 0);ledout : out STD_LOGIC_VECTOR (6 downto 0));end exam33;architecture Behavioral of exam33 issignal led:std_logic_vector(6 downto 0);signal cnt:std_logic_vector(3 downto 0):="0000";beginprocess(clk)beginif(clk' event and clk='1') thenif(MA='0' and MB='0') thencnt<=cnt;elsif (MA='0' and MB='1')thenif cnt="1111" thencnt<="0000";else cnt<=cnt+'1';end if;elsif (MA='1' and MB='0')thenif cnt="0000" thencnt<="1111";else cnt<=cnt-'1';end if;elsecnt<=datain;end if;end if;end process;ledout<=not led;with cnt selectled<="1111001" when"0001", "0100100" when"0010","0110000" when"0011","0011001" when"0100","0010010" when"0101","0000010" when"0110","1111000" when"0111","0000000" when"1000","0010000" when"1001","0001000" when"1010","0000011" when"1011","1000110" when"1100","0100001" when"1101","0000110" when"1110","0001110" when"1111","1000000" when others;end Behavioral;2、波形代码LIBRARY ieee;USE ieee.std_logic_1164.ALL;ENTITY exam33tb ISEND exam33tb;ARCHITECTURE behavior OF exam33tb ISCOMPONENT exam33PORT(clk : IN std_logic;MA : IN std_logic;MB : IN std_logic;datain : IN std_logic_vector(3 downto 0);ledout : OUT std_logic_vector(6 downto 0));END COMPONENT;--Inputssignal clk : std_logic := '0';signal MA : std_logic := '0';signal MB : std_logic := '0';signal datain : std_logic_vector(3 downto 0) := (others => '0');--Outputssignal ledout : std_logic_vector(6 downto 0);BEGIN-- Instantiate the Unit Under Test (UUT)uut: exam33 PORT MAP (clk => clk,MA => MA,MB => MB,datain => datain,ledout => ledout);clk<=not clk after 10 ns;MA<=not MA after 200 ns;MB<=not MB after 100 ns;datain<="1010";END;四、仿真波形五、管脚适配可编程器件与拨码开关和数码管段码的连接情况七、电路资源利用率分析八、验证现象当MA、MB为“00”计数器不计数;当MA、MB为“01”计数器加法计数,步长为一;当MA、MB为“00”计数器减法计数,步长为一;当MA、MB为“11”计数器置数。
实验二_模可变计数器设计(模23模109)南昌大学
实验二模可变计数器设计(模23/模109)一、实验目的1.学习一般的数字电路设计;2.学习数码管的输出方法;3.进一步熟悉Quartes II集成开发软件的使用以及PH-1V型实验装置的使用二、实验要求1.设置一位控制位M,要求M=0:模23计数;M=1:模109计数;2.计数结果用两位数码管显示,显示BCD码;3.给出此项设计的仿真波形;三、实验设计数字电路以前学过模值计数器的设计,而这个实验只是在原类型题加了一个模值转换的设置,再加上要求用数码管显示,所以必须把计数结果转换成BCD 码,所以干脆直接使用BCD码进行模值控制。
1、实验程序2、波形仿真(1)、模23计数波形分析:M为0,所以用模23计数。
当CQ1即个位开始计数,满9进1则CQ2加1,依次计数。
在CQ1达到22时,COUT发出脉冲,表示开始进位。
(2)、模109计数波形分析:M为1,所以用模109计数,当CQ1即个位开始计数,满108进1,依次计数。
在CQ1达到108时,COUT发出脉冲,表示开始进位。
3、引脚设置完成引脚设置后,就可以进行试验箱运行检验了。
四、实验步骤:1.建立工作库文件夹和编辑设计文件(1)在D盘下建立一个文件夹保存工程文件;(2)打开QuartusII,建立新的VHDL文件,再打开的页面下输入程序。
2.编译过程(1)输入完程序之后逐个编译(2)逐个编译无错之后进行全程编译3.系统仿真(1)建立新的波形激励文件(2)在波形编辑器窗口添加节点(3)通过Edit->End Time 来设定仿真结束时间(4)点击save保存(5)通过Tools下的Simulator Tools项进行仿真,然后观察输出波形。
4.引脚锁定(1)通过Assignment->Assignment Editor->Pin查找到所有的引脚(2)选择各个输入输出信号来锁定到不同引脚,进行全编译。
5.编程下载(1)选择Tools->Programmer菜单,点击Hardware Setup窗口完成硬件设置(2)点击Start开始编程下载。
实验三变模计数器的设计
实验三、变模计数器的设计一、实验内容:(1)任务:设计模为9 ,11 ,13,15 的可变模计数器。
(2)要求:能在键盘的控制下,实现变模计数。
二、实验源程序module bianmo(s1,s2,clk,clr,data_out);input s1,s2,clk,clr;output [3:0]data_out;reg [3:0] data_out;reg [3:0]mo;always@(s1 or s2)begincase({s1,s2})2'b00: mo = 9;2'b01: mo = 11;2'b10: mo = 13;2'b11: mo = 15;default: mo=1'bx;endcaseendalways@(negedge clr or negedge clk)beginif(!clr)data_out<= 4'b0000;elsedata_out<= (data_out+1) % mo;endendmodule三、程序设计思想:在本次实验的设计过程中,首先用s0,s1控制四个状态值,分别为00,01,10,11,这四个状态值分别对应可变模计数器的模值,用时钟驱动处于不同状态下值对输出的结果取模,即可实现变模计数器的设计。
四、实验步骤:1. 在任意磁盘如D盘下新建文件夹,命名为BianMo,打开操作软件diamond2.0.2. 建立一个新工程新建工程file->new->project->next,然后在弹出来的对话框中填写相关内容BianMo,在Location栏上选用上面已经建好的文件夹(D/BianMo);然后点击NEXT,在新弹出的对话框NEW PROJECT点击NEXT在又出现的对话框中选择相应的芯片family选择lattice XP2;Device选择LFXP2-5E;Part Names选择LAXP2-5E-6TN144C点击NEXT即可完成工程的新建;如图下图2.1:图2.13. 建立verilog源文件新建项目file->new->file在对话框New File中,选择Verilog Files;在name栏中输入文件名bianmo_3,点击new,在Lattice Diamond主界面出现bianmo_3.v,在TextEditer中编辑输入verilog源程序并保存。
可变模计数器
一、实验目的:1. 掌握用 VHDL 硬件描述语言做电路综合设计方法。
2. 熟悉掌握程序的编译、仿真、生成模块及芯片引脚号码锁定方法并下载到目标芯片。
二、实验仪器:ZY11EDA13BE 型实验箱三、实验内容及要求:1. 设计一个可变模计数器。
2. 设计一个可变模计数器, 计数器有 3个触发器构成, 在外部控制信号 S2和 S1的控制下分别实现模 3、模 5、模 7和模 8计数器,即(1 S2S1=00时,实现模 3计数,触发器的状态一次0→ 1→ 2→ 0;(2 S2S1=01时,实现模 5计数,触发器的状态一次0→ 1→ 2→ 3→ 4→ 0;(3 S2S1=10时,实现模 7计数,触发器的状态一次0→ 1→ 2→ 3→ 4→ 5→ 6→ 0;(4 S2S1=11时,实现模 7计数,触发器的状态一次0→ 1→ 2→ 3→ 4→ 5→ 6→7→ 0; 并将结果输出到数码管上。
四实验程序二四译码部分LIBRARY IEEE;ENTITY M2_45 ISPORT(A: IN STD_LOGIC_VECTOR(1 DOWNTO 0; Y3,Y2,Y1,Y0: BUFFER STD_LOGIC;END M2_45;ARCHITECTURE A OF M2_45 ISSIGNAL SEL :STD_LOGIC_VECTOR(1 DOWNTO 0; SIGNAL QN :STD_LOGIC_VECTOR(2 DOWNTO 0; BEGINSEL(0<=A(0;SEL(1<=A(1;WITH SEL SELECTQN<="0001"WHEN"00", "0010"WHEN"01","0100"WHEN"10","1000"WHEN"11","0000"WHEN OTHERS;Y0<=QN(0;Y1<=QN(1;Y2<=QN(2;Y3<=QN(3;END A;模三部分LIBRARY IEEE;ENTITY MO3 ISPORT(CP,EN:IN STD_LOGIC;Q:OUT STD_LOGIC_VECTOR(2 DOWNTO 0 ;END MO3;ARCHITECTURE A OF MO3 ISSIGNAL QN:STD_LOGIC_VECTOR(2 DOWNTO 0 ; BEGIN PROCESS(CP,ENBEGINIF(EN='0'THENQN<="000";ELSIF(CP'EVENT AND CP='1'THENIF(QN="010"THENQN<="000";ELSEQN<=QN+1;END IF;END IF;END PROCESS;Q<=QN;END A;模五部分LIBRARY IEEE;ENTITY MO5 ISPORT(CP,EN:IN STD_LOGIC;Q:OUT STD_LOGIC_VECTOR(2 DOWNTO 0 ;END MO5;ARCHITECTURE A OF MO5 ISSIGNAL QN:STD_LOGIC_VECTOR(2 DOWNTO 0 ; BEGIN PROCESS(CP,ENBEGINIF(EN='0'THENQN<="000";ELSIF(CP'EVENT AND CP='1'THEN IF(QN="100"THENQN<="000";ELSEQN<=QN+1;END IF;END IF;END PROCESS;Q<=QN;END A;模七部分LIBRARY IEEE;ENTITY MO7 ISPORT(CP,EN:IN STD_LOGIC;Q:OUT STD_LOGIC_VECTOR(2 DOWNTO 0 ;END MO7;ARCHITECTURE A OF MO7 ISSIGNAL QN:STD_LOGIC_VECTOR(2 DOWNTO 0 ; BEGIN PROCESS(CP,ENBEGINIF(EN='0'THENQN<="000";ELSIF(CP'EVENT AND CP='1'THENIF(QN="110"THENQN<="000";ELSEQN<=QN+1;END IF;END IF;END PROCESS;Q<=QN;END A;模八部分LIBRARY IEEE;ENTITY MO8 ISPORT(CP,EN:IN STD_LOGIC;Q:OUT STD_LOGIC_VECTOR(2 DOWNTO 0;END MO8;ARCHITECTURE A OF MO8 ISSIGNAL QN:STD_LOGIC_VECTOR(2 DOWNTO 0 ; BEGINPROCESS(CP,ENBEGINIF(EN='0'THENQN<="000";ELSIF(CP'EVENT AND CP='1'THEN IF(QN="111"THENQN<="000";ELSEQN<=QN+1;END IF;END IF;END PROCESS;Q<=QN;END A;动态扫描部分LIBRARY IEEE;ENTITY CTL ISPORT(CP:IN STD_LOGIC;MO3,MO5,MO7,MO8:IN STD_LOGIC_VECTOR(2 DOWNTO 0; SEL:IN STD_LOGIC_VECTOR(1 DOWNTO 0;COUT:OUT STD_LOGIC_VECTOR(3 DOWNTO 0;END CTL;ARCHITECTURE A OF CTL ISBEGINPROCESS(CPBEGINIF(CP'EVENT AND CP='1'THENCASE SEL ISWHEN "00"=>COUT<=MO3(2 DOWNTO 0;WHEN "01"=>COUT<=MO5(2 DOWNTO 0;WHEN "10"=>COUT<=MO7(2 DOWNTO 0;WHEN "11"=>COUT<=MO8(2 DOWNTO 0;WHEN OTHERS=>COUT<="000";END CASE;END IF;END PROCESS;END A;BCD 译码部分LIBRARY IEEE;ENTITY BCDYM ISPORT(D:IN STD_LOGIC_VECTOR(2 DOWNTO 0; Q:OUT STD_LOGIC_VECTOR(6 DOWNTO 0; END BCDYM;ARCHITECTURE QQ OF BCDYM ISBEGINPROCESS(DBEGINCASE D ISWHEN"000"=>Q<="0111111";WHEN"001"=>Q<="0000110";WHEN"010"=>Q<="1011011";WHEN"011"=>Q<="1001111";WHEN"100"=>Q<="1100110";WHEN"101"=>Q<="1101101";WHEN"110"=>Q<="1111101";WHEN"111"=>Q<="0000111";WHEN OTHERS=>Q<="0000000";END CASE;END PROCESS;END QQ;五实验电路图 MO3 CP INPUT VCC CP Q[2..0] EN 0. inst3 M2_45 A[1..0] INPUT VCC A[1..0] Y0 Y1 Y2 Y3 MO5 CP Q[2..0] EN CTL BCDY M D[2..0] CP MO3[2..0] MO5[2..0] inst11 COUT[2..0] Q[6..0] inst inst5 MO7[2..0] MO8[2..0]SEL[1..0] MO7 CP Q[2..0] EN inst10 Q[6..0] inst7 OUTPUT MO8 CP Q[2..0] EN inst8 //。
模可控计数器的设计
模可控计数器的设计-CAL-FENGHAI-(2020YEAR-YICAI)_JINGBIAN
杭州电子科技大学
实验报告
实验课程名称EDA技术
实验序号3
实验内容模可控计数器的设计班级
姓名张学涌
学号
指导教师黄继业
二○一一年十一月十日
实验目的与要求
实验目的:进一步学习quartus的文本设计,仿真,测试,以及硬件下载测试;
实验名称:模可控计数器的设计
实验原理
可用并行预置的加法器实现;将计数进位与预置数加载输入信号端或计数复位端相接,当计数值溢出时,在下一时钟预置的值加载进计数器,然后计数器再从这个预置数重新计数,从而实现模可控的计数器;
实验内容
模可控计数器的文本编辑如图:
仿真后的波形图为:
由图可以知道,几乎没有毛刺。
这是一个8位的计数器,预置数为F1,当计数到FF的时候,出现溢出,同一时刻LD(keep属性)变成1,。
到下一时刻的时候,计数器加载预置数,即F1,同一时刻PM变成1,然后计数器再从F1 重新计数,直到FF时又重新加载;
仿真后的RTL图为:
资源利用情况:
由图可以看到资源利用得非常少;
总结与体会
通过模可控器的设计,我懂得如何设计计数器的思路和原理,收获很深刻!。
11实验十一可控计数器的设计与调试
11实验十一可控计数器的设计与调试
实验十一可控计数器的设计与调试
一、实验目的:
1、熟悉EDA软件的使用和VHDL的设计应用。
2、锻炼综合设计能力,掌握可控计数器的设计。
二、实验要求:
1、设计一个五进制计数器,由一个按键控制按以下不同的方式计数:
按第一次,按0、1、2、3、4、0、1、2、3、4......顺序循环计数;
按第二次,按1、3、5、7、9、1、3、5、7、9......顺序循环计数;
按第三次,按A、B、C、D、E、A、B、C、D、E......顺序循环计数;
按第四次,按8、6、4、2、0、8、6、4、2、0......顺序循环计数;
再按则依上述循环......
2、分别用2位数码管动态显示控制信号(按1、2、
3、
4、1、2、3、4的顺序循环计数)和计数状态,最好隔开一位;
3、设置复位键,用以实现复位功能:当该端有效时,状态立即复位到“1”、“0”状态,即计数器从第一次的0开始重新计数。
三、实验原理:略
四、实验内容:
1、用VHDL编制以上计数器的源程序,完成其编译和功能仿真,并生成符号入库;
2、用VHDL编制扫描显示驱动模块(可调用在实验中做过的现成模块),该模块可不做仿真;
3、用原理图方式调用以上模块完成顶层设计并编译通过;
4、完成芯片引脚锁定和硬件下载;
5、在EDA实验箱上完成实际调试;
6、在规定时间内完成以上工作,并按照完成步骤计分。
7、设计文件上传。
五、实验扩展:
进一步完善系统功能,设计更灵活更丰富的可控计数器。
重复上述过程。
基于74LS161模可调计数器测试数电课程设计
目录一设计任务 (1)1.1设计目的和意义 (1)1.1.1 设计目的 (1)1.1.2意义 (1)1.2初始参数和要求 (1)1.2.1 序列计数器简介 (1)1.2.2 初始要求 (1)二系统设计 (2)2.1系统工作原理 (2)2.1.1 74LS161引脚图 (2)2.1.2 74LS161计数器内部逻辑图 (3)2.1.3 74LS161电路状态转换表 (3)2.1.4 74LS161时序图 (4)2.1.5 74LS161计数器功能表 (4)2.2 器件选择 (5)2.3电路设计 (6)2.3.1 74LS161计数器十六进制测试 (6)2.3.2 基于74LS161的模八计数器的设计及数据测试 (6)2.3.3 基于74LS161的模四计数器的设计及数据测试 (7)2.4 电路仿真测试 (9)2.4.1 74LS161的模四计数器的时序图 (9)2.4.2 基于74LS161的模八计数器的时序图 (9)三总结 (10)3、1结论 (10)3.2优点与不足 (10)3.3 心得与体会 (10)参考文献 (11)一设计任务1.1设计目的和意义1.1.1 设计目的熟悉并掌握74LS161计数器的引脚功能、工作原理及计数功能。
熟悉数字集成电路的设计和使用方法。
即根据设计要求和性能参数,查阅文献资料,收集,分析类似电路的性能,并通过组装仿真等实践活动,使电路达到性能指标。
为后续的毕业设计打好基础.毕业设计是系统的工程设计实践,而课程设计的着眼点是让学生开始从理论学习的轨道上逐渐引向实际运用,从已学过的定性分析,定量计算的方法,逐步掌握工程设计的步骤和方法,了解科学实验的程序和实施方法。
课程设计报告的书写,为今后从事技术工作撰写科技报告和技术资料打下基础.1.1.2意义电子技术基础课程设计增强了我的创新意识和创新能力。
创新意识和创新能力是21世纪人才不可缺少的能力。
创新意识和能力需要贯穿于整个大学学习的过程,本次实习就是一次很好的创新过程,不仅要求我们具有扎实的理论基础,更重要的加强系统化的时间训练。
计数器通用设计模型
1010
1011
1100
1101
1110
1111
0000
0001
0010
0011
0100
0101
0110
0111
1000
1001
图7-45 表7-14真值表对应的状态图
1.5 基于一般模型的模可控计数器设计
图7-46 不 模可控同步加法计数器电路模型
1.5 基于一般模型的模可控计数器设计
表7-15 模5计数器的译码器
数字电子技术
计数器通用设计模型
1.1 时序逻辑设计方案考察
高
从早期出现的GAL就可以看出其更适合于同步逻辑的设计。
6.8.2节介绍的MAX7000系列CPLD尽管既可以设计异步逻辑,也可 以设计同步逻辑;但此类器件更注重高速同步时序逻辑电路的实现。
表7-16 模7计数器的译码器
1.6 基于一般模型的反馈清零法构成模12计数器
图7-47 基于一般模型的反馈清零法构成的模12加法计数器
1.7 基于一般模型的同步加载型计数器设计
图7-48 基于一般模型的同步加载法构成的模12加法计数器模型
1.8 基于一般模型的异步加载型计数器设计
图7-49 基于一般模型的异步加载法构成的模12加法计数器模型
6.8.3节中介绍的由Altera较新近推出的Cyclone/II FPGA也有类似 结构安排。
1.2 计数器一般结构模型
图7-44 计数器一般结构模型
1.3 基于一般模型的四位二 进制计数器设计
表7-12 加1器真值表
1.4 基于一般模型的BCD码计数器设计
表7-13 模10计数器真值表
表7-14 改进后的真值表
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
杭州电子科技大学
实验报告
实验课程名称EDA技术
实验序号3
实验内容模可控计数器的设计班级10047812
姓名张学涌
学号10047855
指导教师黄继业
二○一一年十一月十日
实验目的与要求
实验目的:进一步学习quartus的文本设计,仿真,测试,以及硬件下载测试;
实验名称:模可控计数器的设计
实验原理
可用并行预置的加法器实现;将计数进位与预置数加载输入信号端或计数复位端相接,当计数值溢出时,在下一时钟预置的值加载进计数器,然后计数器再从这个预置数重新计数,从而实现模可控的计数器;
实验内容
模可控计数器的文本编辑如图:
仿真后的波形图为:
由图可以知道,几乎没有毛刺。
这是一个8位的计数器,预置数为F1,当计数到FF 的时候,出现溢出,同一时刻LD(keep属性)变成1,。
到下一时刻的时候,计数器加载预置数,即F1,同一时刻PM变成1,然后计数器再从F1 重新计数,直到FF时又重新加载;
仿真后的RTL图为:
资源利用情况:
由图可以看到资源利用得非常少;
总结与体会
通过模可控器的设计,我懂得如何设计计数器的思路和原理,收获很深刻!。