数字电路期末设计 模可变同步计数器
模可变计数器设计(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;它的模块图如下:顶层文件:对文件保存并进行编译仿真,在验证仿真正确后进行管脚绑定如下图,然后进行下载测试。
实验一 模可变计数器

南昌大学实验报告学生姓名:柳宇航学号: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. 时钟发生器:同步计数器可以用于产生各种精确的时钟信号。
通过设定计数器的初始值和计数范围,并合适地选取时钟频率,可以产生所需的时钟信号,如系统时钟、工作时钟、校准时钟等。
这种应用广泛存在于数字电路设计和一个微控制器中。
总结起来,同步计数器在各种电子设备和系统中都有重要的应用。
同步计数器设计

2.选择触发器类型,求驱动方程和输出方程。 2.选择触发器类型,求驱动方程和输出方程。 选择触发器类型 触发器类型: 触发器类型:D 个数: 个数:2
4
2.选择触发器类型,求驱动方程和输出方程。 2.选择触发器类型,求驱动方程和输出方程。 选择触发器类型 状态转换表 输入 X 0 0 0 1 1 1 1 现态 Q1n Q0n 0 0 0 1 1 0 0 0 0 1 1 0 1 1
D0 = Q1 Q 0 + Q 0 X
6
Z 2 = Q1Q1 Q 0 + Q 0 X
D1 = Q1Q0 + Q1 Q0 X
Z 1 = Q1 Q 0 X
Z 2 = Q1Q0 X
7
设计举例
全状态转换表 4. 画全状态图 次 态 驱动信号 输出 输入 现态 X/Z1Z2 X Q1n Q0n Q1n+1Q0n+1 D1 D0 Z1 Z2 0 1 0 0 0 0 0 0 1 0 1 1 0 1 0 0 0 0 ☓/00 1 0 0 0 0 0 1 0 0 00 01 1 0 0 0 1 0 1 0 0 0/10 ☓/00 1 0 1 1 0 1 0 0 0 1/01 0/00 1 1 0 1 1 1 1 0 0 11 10 1 1 1 0 0 0 0 0 1 1/00 0 1 1 0 0 0 0 0 0 电路是一个能自启动且满足带进位输出端、模可变的计数器。 电路是一个能自启动且满足带进位输出端、模可变的计数器。
8
设计举例
仿真波形: 仿真波形:
X 1
0 2 0
X=0,三进制加法计数器 =1,四进制加法计数器 = , X= ,
9
10
Q1 Q0 X 00
0 0 1 0
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的可变模计数。
同步计数器的设计实验报告

同步计数器的设计实验报告同步计数器的设计实验报告篇一:实验六同步计数器的设计实验报告实验六同步计数器的设计学号:姓名:一、实验目的和要求1.熟悉JK触发器的逻辑功能。
2.掌握用JK触发器设计同步计数器。
二、实验仪器及器件三、实验预习1、复习时序逻辑电路设计方法。
⑴逻辑抽象,得出电路的状态转换图或状态转换表①分析给定的逻辑问题,确定输入变量、输出变量以及电路的状态数。
通常都是取原因(或条件)作为输入逻辑变量,取结果作输出逻辑变量。
②定义输入、输出逻辑状态和每个电路状态的含意,并将电路状态顺序编号。
③按照题意列出电路的状态转换表或画出电路的状态转换图。
通过以上步骤将给定的逻辑问题抽象成时序逻辑函数。
⑵状态化简①等价状态:在相同的输入下有相同的输出,并且转换到同一次态的两个状态。
②合并等价状态,使电路的状态数最少。
⑶状态分配①确定触发器的数目n。
因为n个触发器共有2n种状态组合,所以为获得时序电路所需的M个状态,必须取2n1<M2n②给每个电路状态规定对应的触发器状态组合。
⑷选定触发器类型,求出电路的状态方程、驱动方程和输出方程①根据器件的供应情况与系统中触发器种类尽量少的原则谨慎选择使用的触发器类型。
②根据状态转换图(或状态转换表)和选定的状态编码、触发器的类型,即可写出电路的状态方程、驱动方程和输出方程。
⑸根据得到的方程式画出逻辑图⑹检查设计的电路能否自启动①电路开始工作时通过预置数将电路设置成有效状态的一种。
②通过修改逻辑设计加以解决。
⑺设计步骤简图图3 设计步骤简图2、按实验内容设计逻辑电路画出逻辑图。
设计思路详情见第六部分。
电路图如下:四、实验原理1.计数器的工作原理递增计数器----每来一个CP,触发器的组成状态按二进制代码规律增加。
递减计数器-----按二进制代码规律减少。
双向计数器-----可增可减,由控制端来决定。
2.集成J-K触发器74LS73⑴符号:图1 J-K触发器符号⑵功能:表1 J-K触发器功能表⑶状态转换图:图2 J-K触发器状态转换图⑷特性方程:Qn1JQnKQn⑸注意事项:①在J-K触发器中,凡是要求接“1”的,一定要接高电平(例如5V),否则会出现错误的翻转。
实验二 用图形法设计模为12的同步计数器

实验中,也遇到了一些问题。比如说:在图形保存中,选择“.gdf”格式,如果选择错误就会导致实验仿真错误。在仿真前,要先建立工程,再进行编译,再导入图形中的输入项,,最后进行仿真,观察其结果。
(3)单击“Ok”关闭此对话框,可以得到下面的波形图文件。现在观测就容易了。
图3.11
实验电路图形
图3.12
实验过程截图
图3.13
图3.14
实验结果截图
BIN(二进制)
图3.15
DEC(十二进制)
图3.16
OCT(八进制)
图3.17
HEX(十六进制)
图3.18
四.实验结果分析
本次实验通过一个“74161同步计数器”来实现模可变的功能,通过在MAX+plusII软件中进行编译仿真,观察仿真结果,在初次接触此软件的同时,熟悉其功能操作,对实验结果及其相关步骤进行分析。实验当中,首先在图形元器件的选择上,按照实验指导来进行,及修改相关参数和名称,连接图形,掌握方法,成功连接完成,进行保存并仿真。
(3)在Type区选择Input和Output,在默认的情况下是打开的,单击List按钮,可在Available Nodes & Groups区看到设计文件中使用的输入/输出信号,单击=>按钮可以将这些信号选择到Selected Nodes & Groups区。单击OK按钮,关闭对话框即可看到波形编辑窗口,将此波形文件保存为默认名。
将鼠标移到“clear”信号的240ns处按住鼠标左键并向右拖动鼠标300ns处,松开鼠标左键可以看到这段区域为黑色,被选中,单击工具条中的 即可。
模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”计数器置数。
变模计数器

南昌大学实验报告学生姓名:学号:专业班级:实验类型:□验证□综合□设计□创新实验日期:实验成绩:实验二模可变计数器设计(一)实验目的1.进一步熟悉PH-1V型实验装置和QuartusⅡ软件的使用;2.进一步熟悉和掌握EDA设计流程;3.学习简单组合、时序电路的EDA设计;4.学习计数器中二进制码到BCD码的转换技巧;5.学习PH-1V型实验装置上数码管的输出方法。
(二)设计要求完成设计、仿真、调试、下载、硬件测试等环节,在PH-1V型EDA实验装置上实现模可变计数器功能,具体要求如下:1.设置一个按键控制改变模值,按键按下时模为10-99之间(具体数值临时确定)的数,没按下时模为100-199之间(具体数值临时确定)的数;2.计数结果用三位(静态)数码管十进制显示。
(三)主要仪器设备1.微机1台2.QuartusII集成开发软件 1套3.PH-1V型EDA实验装置1套(四)实验总体设计该实验要求实现模可变计数,便可首先分别设计出模88和模132的计数器,然后采用一个m电平控制模值,当m=0,实现模88计数;当m=1,实现模132计数。
设计计数器时,即从0开始计数至模值减1这个数时复位为0再开始计数,如模88:从0开始增1计数,当计数到87时复位为0。
然后实验要求计数值用十进制BCD码在数码管上输出,要把相应的计数值转换成十进制BCD码,如对应55,则要转换成01010101B=55H=85,即将55加上30便可实现转换。
而对应不同范围的计数值加上相应的差值转换成十进制BCD码输出。
(四)实验重难点设计1. 用文本输入法设计模可变计数器(1)打开Quartus II软件,进入编辑环境。
(2)创建新的文本文件,命名为cnt88132,根据其总体设计思路写出相应的语句如下:library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity cnt88132 isport(clk,rst,en,m:in std_logic;q:out std_logic_vector (11 downto 0);cout:out std_logic);end cnt88132;architecture behav of cnt88132 isbeginprocess(clk,rst,en,m)variable qq:std_logic_vector (11 downto 0); beginif rst='1' then qq:=(others=>'0');elsif clk'event and clk='1' thenif en='1' and m='0' thenif qq<87 then qq:=qq+1;else qq:=(others=>'0');end if;elsif en='1' and m='1' thenif qq<131 then qq:=qq+1;else qq:=(others=>'0');end if;end if;end if;if m='0' and qq=87 then cout<='1';elsif m='1' and qq=131 then cout<='1';else cout<='0';end if;if qq<10 then q<=qq;end if;if qq<20 and qq>9 then q<=qq+6;end if;if qq<30 and qq>19 then q<=qq+12;end if;if qq<40 and qq>29 then q<=qq+18;end if;if qq<50 and qq>39 then q<=qq+24;end if;if qq<60 and qq>49 then q<=qq+30;end if;if qq<70 and qq>59 then q<=qq+36;end if;if qq<80 and qq>69 then q<=qq+42;end if;if qq<90 and qq>79 then q<=qq+48;end if;if qq<100 and qq>89 then q<=qq+54;end if;if qq<110 and qq>99 then q<=qq+156;end if; if qq<120 and qq>109 then q<=qq+162;end if; if qq<130 and qq>119 then q<=qq+168;end if; if qq<140 and qq>129 then q<=qq+174;end if; end process;end behav;3、编辑好程序后进行仿真测试。
模可变计数器

南昌大学实验报告学生姓名:俞鑫学号: 106100210075 专业班级:通信102班实验类型:□验证□综合□设计□创新实验日期:实验成绩:模可变计数器的设计一、实验要求利用控制位M来改变模长要求M=1时模为114计数,M=0时模为16计数;二、实验步骤1.选目标器件CycloneII中的EP2C35F672C8,建立名为count的工作库文件夹,输入计数器的VHDL代码。
LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY count ISPORT(CLK,M,EN,RST:IN STD_LOGIC;sel0,sel1,sel2:buffer STD_LOGIC;SG:OUT STD_LOGIC_VECTOR(7 DOWNTO 0); --数码管八段CLK1:buffer STD_LOGIC;GW,SW,BW: buffer STD_LOGIC_VECTOR(3 DOWNTO 0);--计数器的个,十,百位 COUT:OUT STD_LOGIC; --溢出信号SEL:OUT STD_LOGIC_VECTOR(7 DOWNTO 0) --位选信号);END count;ARCHITECTURE behav OF count ISSIGNAL CNT : STD_LOGIC_VECTOR(7 DOWNTO 0); --数码管分频计数 SIGNAL J : STD_LOGIC_VECTOR(11 DOWNTO 0); --12位BCD计数值SIGNAL CNT8: STD_LOGIC_VECTOR(2 DOWNTO 0); --数码管选择SIGNAL A : STD_LOGIC_VECTOR(3 DOWNTO 0); --数码管显示值0SIGNAL MODEL : STD_LOGIC_VECTOR(11 DOWNTO 0); --模长信号BEGINP1:PROCESS(CLK) --进程P1分出的频率用来数码管的位选扫描BEGINIF CLK'EVENT AND CLK = '1' THEN CNT<=CNT+1;IF CNT=130 THEN CLK1<='1'; --130分频ELSE CLK1<='0';END IF;END IF;END PROCESS;P2:PROCESS(EN,RST,M,CLK1) --计数BEGINCASE M ISWHEN '0'=>MODEL<="000000010101"; --16WHEN '1'=>MODEL<="000100010011"; --114END CASE;GW<=J(3 downto 0);SW<=J(7 downto 4);BW<=J(11 downto 8);IF RST='1' THEN J<=(others=>'0');ELSIF CLK1'EVENT AND CLK1='1' THENIF EN='1' THENIF J<MODEL THENIF GW=9 THEN --个位为9时加7调整 J<=J+7;IF SW=9 THEN --十位为9时加103调整 J<=J+103;END IF;ELSE J<=J+1;END IF;ELSE J<=(others=>'0');END IF;END IF;END IF;END PROCESS;P3:PROCESS( CLK) --数码管控制BEGINIF CLK'EVENT AND CLK='1' THENIF CNT8<"010" THEN CNT8 <=CNT8+1;ELSE CNT8<=(OTHERS=>'0');END IF;END IF;SEL(0)<=sel0 ;SEL(1)<=sel1 ;SEL(2)<=sel2 ;CASE CNT8 IS --个、十、百分别送数码管动态显示WHEN "000" => sel2<='0';sel1<='1';sel0<='0';A<=GW;WHEN "001" => sel2<='0';sel1<='0';sel0<='1';A<=SW;WHEN "010" => sel2<='0';sel1<='0';sel0<='0';A<=BW;WHEN OTHERS =>NULL;END CASE;END PROCESS ;P4:PROCESS(A) --七段译码BEGINCASE A ISWHEN "0000" =>SG<="00111111"; WHEN "0001" =>SG<="00000110";WHEN "0010" =>SG<="01011011"; WHEN "0011" =>SG<="01001111";WHEN "0100" =>SG<="01100110"; WHEN "0101" =>SG<="01101101";WHEN "0110" =>SG<="01111101"; WHEN "0111" =>SG<="00000111";WHEN "1000" =>SG<="01111111"; WHEN "1001" =>SG<="01101111";WHEN OTHERS=>NULL;END CASE;END PROCESS;COUT <='1' WHEN J =MODEL ELSE '0';END behav;2.将上述编辑的文件保存,并编译3.建立仿真波形文件,进行波形仿真。
可变模计数器

实验名称:可变模数计数器一、实验目的:设计一个可变模计数器,计数器由3个触发器构成,在外部控制信号S2S1的控制下分别实现模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时,实现模8计数,触发器状态依次为0→1→2→3→4→5→6→7→0;二、实验内容:(1)、顶层原理图:(2)、各个模块程序:1、模3:(库略)entity cnt3 isport(s2,s1,en,rd:in std_logic;clk:in std_logic;q:out std_logic_vector(3 downto 0));end cnt3;architecture cnt of cnt3 issignal qn:std_logic_vector(3 downto 0);beginprocess(clk,s1,s2)beginif (rd='0' ) thenqn<=X"0";elsif (en='0') thenqn<=X"0";elsif (clk'event and clk='1' and s1='0' and s2='0') thenif qn(3 downto 0)= X"2" then qn( 3 downto 0 )<="0000"; else qn<=qn+1; end if; end if; end process; q<=qn; end cnt; 2、模5:(库略) entity cnt5 is port( s2,s1,en,rd:in std_logic; clk:in std_logic; q:out std_logic_vector(3 downto 0) ); end cnt5;architecture cnt of cnt5 is signal qn:std_logic_vector(3 downto 0); begin process(clk,s1,s2) begin if (rd='0' ) then qn<=X"0"; elsif (en='0') then qn<=X"0"; elsif (clk'event and clk='1' and s1='1' and s2='0') then if qn(3 downto 0)= X"4" then qn( 3 downto 0 )<="0000"; elseqn<=qn+1;end if; --else --qn<=X"0"; end if; end process; q<=qn; end cnt;3、模7:(库略) entity cnt7 is port( s2,s1,en,rd:in std_logic; clk:in std_logic; q:out std_logic_vector(3 downto 0) ); end cnt7;architecture cnt of cnt7 is signal qn:std_logic_vector(3 downto 0); begin process(clk,s1,s2) begin if (rd='0' ) then qn<=X"0"; elsif (en='0') then qn<=X"0"; elsif (clk'event and clk='1' and s1='0' and s2='1') then if qn(3 downto 0)= X"6" then qn( 3 downto 0 )<="0000"; else qn<=qn+1;end if;--else--qn<=X"0";end if;end process;q<=qn;end cnt;4、模8:(库略)entity cnt8 isport(s2,s1,en,rd:in std_logic;clk:in std_logic;q:out std_logic_vector(3 downto 0));end cnt8;architecture cnt of cnt8 issignal qn:std_logic_vector(3 downto 0);beginprocess(clk,s1,s2)beginif (rd='0' ) thenqn<=X"0";elsif (en='0') thenqn<=X"0";elsif (clk'event and clk='1' and s1='1' and s2='1') thenif qn(3 downto 0)= X"7" thenqn( 3 downto 0 )<="0000";elseqn<=qn+1;end if;--else--qn<=X"0";end if;end process;q<=qn;end cnt;5、decoder显示:(库略)entity decoder isport(s1,s2:in std_logic;seg:out std_logic_vector(6 downto 0);done,dtwo,dthree,dfour:instd_logic_vector(3 downto 0));end decoder;architecture dec of decoder issignal d : std_logic_vector(3 downto 0); beginprocess(s1,s2)beginif ( s1='0' and s2='0') thend <=done;elsif ( s1='1' and s2='0') thend <=dtwo;elsif ( s1='0' and s2='1') thend <=dthree;elsed<=dfour;end if;end process;with d selectseg <="0111111" when "0000","0000110" when "0001","1011011" when "0010","1001111" when "0011","1100110" when "0100","1101101" when "0101","1111101" when "0110","0000111" when "0111","1111111" when "1000","1101111" when "1001","0000000" when others;end dec;三、实验总结:通过本次实验,掌握了从顶层文件原理图开始,自上而下的设计电路的方法,感受到此方法的在各个模块程序调试时的方便,有更好的逻辑思路。
可变模计数器

一、实验目的: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 //。
变模计数器设计

武汉理工大学
数字电子技术基础课程设计报告
姓名:
班级:
学号:
指导老师:华剑
一.设计要求
设计一个变模计数器
当:X=0时,实现七进制加计数
X=1时,实现五进制加计数
二.设计思路
计数器最大为七进制,因此采用四位二进制计数器即可实现。
因此采用74LS161来进行设计。
三.元器件介绍
1.74LS161原理图和管脚图
74LS161逻辑功能表 U374LS161D QA 14QB 13QC 12QD 11RCO 15
A 3
B 4
C 5
D 6
ENP 7ENT 10
~LOAD 9~CLR 1
CLK 2
2.或门
3.与非门
4.单刀双掷开关
5.函数发生器
6.显示译码器
三.
电路模块设计
S2
键 = 空格
XFG1
U1
DCD_HEX
1.时钟信号输入
2.数字显示电路
3.同步置0电路
四.电路图
五.工作过程
1.X=0时,显示译码器从0到6依次循环显示
计数器从零开始计数。
当QDQCQBQA=0110时,经过或门和与非门得到低电平信号,使得LD=0,计数器置0。
接下来又从0开始循环计数。
2.X=1时,显示译码器从0到4依次循环显示
计数器从零开始计数。
当QDQCQBQA=0100时,经过或门和与非门得到低电平信号,使得LD=0,计数器置0。
接下来又从0开始循环计数。
六.仿真
经过仿真软件模拟,可以实现所要求实现的功能,设计成功。
数电设计任意模值的计数器

课程设计(论文)课程名称:数字电子技术基础题目:设计任意模值的计数器院(系): 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加法计数器,了解计数器的工作原理。
74LS90计数器是异步二——五——十计数器,而8421BCD码是最基本和最常用的BCD码,它和四位自然二进制码相似。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
故障分析与电路改进:
无明显故障发生。
电路改进:
1.加入扫描显示功能;
低位为计数结果的显示,高位为进位的显示。
2.加入暂停功能;
Yi(J–K输入) = Ji(Ki)·S(控制变量)
通过开关控制所有J–K触发器进入保持状态,实现暂停功能。
实验总结
1.本次实验是本学期实验的综合性考察,考察了J–K触发器的使用,同步计数器的设计,J K表达式的推导等方面。完成本次实验后,对课本理论知识的掌握程度进一步加深。
2.实验进行之前的推导过程十分重要,要小心谨慎,注意不要出错。
附录:
元器件清单:
74LS08*1、74LS20*4、74LS86*1、74LS00*3、
2.时钟输入接单步正脉冲,检查电路静态运行结果是否符合设计预期,如有问题返回步骤1。
3.时钟输入接1Hz连续脉冲,观察X = 0时和X = 1时计数显示结果跟进位显示结果是否正确,如有问题返回步骤1和步骤2。
4.改进电路,为电路增加新功能。
实验过程
因所需要的门电路过多,本实验在proteus上完成仿真。
0
0
0
1
01
X
0
X
1
11
X
1
X
0
10
1
0
0
0
Q3N+1 =
J3 =
K3 =
进位输出F:
Q2Q1 XQ3
00
01
11
10
00
0
0
0
0
01
X
0
X
1
11
X
0
X
0
10
0
1
0
0
F =
2.扫描显示公式:
Yi = Q(进位)·S + Q(计数)·
3.原理图:
4.时序图:
X
Q3
Q2
Q1
F
实验步骤
1.按电路图在数字电路实验箱上安装电路,注意检查接线是否正确和接触是否良好。
001
011/1
Q1N+1:
Q2Q1 XQ3
00
01
11
10
00
1
1
0
0
01
X
0
X
1
11
X
0
X
0
10
1
0
1
1
Q1 =
J1 =
K1 =
Q2N+1:
Q2Q1 XQ3
00
01
11
10
00
0
1
1
1
01
X
0
X011X源自1X110
0
0
0
1
Q2N+1 =
J2 =
K2 =
Q3N+1:
Q2Q1 XQ3
00
01
11
10
00
实验原理:
1.J-K表达式的推导:
下图为J–K触发器的真值表和状态转换图:
本次设计需要实现的计数顺序为0 1 3 2 6 5,变量X = 0时递增,X = 1时递减。次态卡诺图如下:
Q2Q1
XQ3
00
01
11
10
00
001
011
010/1
110
01
X
000
X
101
11
X
110
X
010
10
101
000
课程设计任务书
课程名称:数字电子技术
题目:模可变同步计数器
专业班级:
学生姓名:
学号:
指导老师:
审批:
任务书下达日期
设计完成日期
实验:模可变同步计数器的设计
实验目
利用J-K触发器和门电路设计一个计数正序为 0 1 3 2 6 5 的模可变同步计数器,当控制信号X=0时递增,X=1时递减,MOD=PT,如附件,计数结束,输出“1”,并通过数码管显示计数值。
74LS73*3、74LS74*1、数码管(内含74LS48驱动)*2、模拟开关*3
软件支持:
Proteus 7、Multisim 12.0
参考文献:
L. Floyd, Thomas.Digital Fundamentals,电子工业出版社,edition Tenth, vol.1, Oct. 2011.