数字电路期末设计 模可变同步计数器
- 格式:docx
- 大小:388.92 KB
- 文档页数:8
模可变计数器设计(一)实验目的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;它的模块图如下:顶层文件:对文件保存并进行编译仿真,在验证仿真正确后进行管脚绑定如下图,然后进行下载测试。
南昌大学实验报告学生姓名:柳宇航学号: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计数。
《数字电子技术》模拟题一一、单项选择题(2×10分)1.下列等式成立的是()A、A⊕1=AB、A⊙0=AC、A+AB=AD、A+AB=B2.函数F=(A+B+C+D)(A+B+C+D)(A+C+D)的标准与或表达式是()A、F=∑m(1,3,4,7,12)B、F=∑m(0,4,7,12)C、F=∑m(0,4,7,5,6,8,9,10,12,13,14,15)D、F=∑m(1,2,3,5,6,8,9,10,11,13,14,15)的RAM。
、、C、D、.函数F=A C+AB+,无冒险的组合为()。
B=C=1B、C=0D、B=C=OA、多谐振荡器B、施密特触发器C、双稳态触发器D、单稳态触发器二、判断题(1×10分)()1、在二进制与十六进制的转换中,有下列关系:()B=(9DF1)H()2、8421码和8421BCD码都是四位二进制代码。
()3、二进制数1001和二进制代码1001都表示十进制数9。
()4、TTL与非门输入采用多发射极三极管,其目的是提高电路的开关速度。
()5、OC与非门的输出端可以并联运行,实现“线与”关系,即L=L1+L2()6、CMOS门电路中输入端悬空作逻辑0使用。
()7、数字电路中最基本的运算电路是加法器。
()8、要改变触发器的状态,必须有CP脉冲的配合。
()9、容量为256×4的存储器,每字4位,共计256字,1024个存储单元。
()10、自激多谐振荡器不需外加触发信号,就能自动的输出矩形脉冲。
是否、C,CP,试四→4,试用8选1数据选择器74151和四位同步二进制加法计数器74LS161芯片设计序列信号发生器,序列信号为(左位在先),画出电路连线图。
附74LS161四位同步二进制加法计数器芯片功能表。
《数字电子技术》模拟题二一、单项选择题(2×10分)1.在下列数据中,数值最小的是()A 、59HB 、130OC 、1010111B8421BCD2.函数的标准与或表达式是()4D 触发器7,计9.用容量为16K ×8位存储芯片构成容量为64K ×8位的存储系统,需()片16K ×8位存储芯片,需()根地址线,( )根数据线。
数电设计任意模值的计数器..第一篇:数电设计任意模值的计数器..课程名称:数字电子技术基础题目:设计任意模值的计数器院(系): 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代码并存盘。
同步计数器设计及应用同步计数器是一种用于计算、记录和控制操作次数的电子设备。
它由多个触发器(如D触发器)组成,通过正确的时钟信号、清零信号和计数方式,可以实现各种计数功能。
同步计数器的设计原理是基于触发器的性质:当时钟沿到来时,数据会从输入引脚传输到输出引脚,通过将多个触发器级联,可以实现多位的二进制计数器。
在同步计数器中,计数是同步进行的,意味着每个触发器的时钟输入都与前一个触发器的输出相连。
当一个触发器发生状态变化时,将会触发下一个触发器进行计数。
这样,整个计数器的每个位都会随着时钟信号的变化进行计数操作。
同步计数器的应用非常广泛,下面列举了一些常见的应用场景:1. 时序控制器:同步计数器可以作为时序控制器的一部分,用于生成特定的时序信号,例如时钟分频、脉冲生成等。
它可以按照设定的步进和延时来发出相关信号,从而实现对系统的精确控制。
2. 信号发生器:同步计数器可以用来生成不同频率的信号,用于测试和校准各种仪器设备。
通过设定计数器的输入时钟频率和计数值,可以产生特定频率的方波、脉冲等信号,可以应用于通信、测量、自动控制等领域。
3. 事件计数器:同步计数器可以用来计数来自外部事件的脉冲,例如传感器的测量、机械运动的脉冲等。
通过将事件脉冲与计数器的时钟输入相连,并根据计数器的输出进行一定的处理,可以实现对事件的计数和统计。
4. 频率计数器:同步计数器可以用来测量输入信号的频率。
当输入信号的周期固定时,通过测量计数器的输出,在一定的时间内进行计数,可以得到输入信号的频率。
这种方法广泛应用于频谱分析、无线通信、音频信号处理等领域。
5. 时钟发生器:同步计数器可以用于产生各种精确的时钟信号。
通过设定计数器的初始值和计数范围,并合适地选取时钟频率,可以产生所需的时钟信号,如系统时钟、工作时钟、校准时钟等。
这种应用广泛存在于数字电路设计和一个微控制器中。
总结起来,同步计数器在各种电子设备和系统中都有重要的应用。
实验二 模可变计数器设计一、实验目的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后在打开的界面下输入已经设计好的程序。
基于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的可变模计数。