实验二 模可变计数器(DOC)

合集下载

二位二进制计数器(DOC)

二位二进制计数器(DOC)

课程设计任务书学生姓名杜佳专业班级计算机zy1202班指导教师袁晓玲学院名称计算机科学与技术学院一、题目:二位二进制计数器。

外部输入X=1时,计数器加1计数,外部输入X=0时,计数器保持不变。

原始条件:使用D触发器( 74 LS 74 )、“与”门( 74 LS 08 )、“或”门( 74 LS32 )、非门( 74 LS 04 ),设计二位二进制计数器。

二、要求完成设计的主要任务如下:1.能够运用数字逻辑的理论和方法,把时序逻辑电路设计和组合逻辑电路设计相结合,设计一个有实际应用的数字逻辑电路。

2.使用同步时序逻辑电路的设计方法,设计二位二进制计数器。

写出设计中的三个过程。

画出课程设计图。

3.根据74 LS 74、74 LS 08、74 LS 32、74 LS 04集成电路引脚号,在设计好的二位二进制计数器电路图中标上引脚号。

4.在试验设备上,使用74 LS 74、74 LS 08、74 LS 32、74 LS 04集成电路连接、调试和测试二位二进制计数器电路。

5.设计报告书包括:设计内容与设计要求、设计原理和过程、调试分析、心得体会、参考文献。

三、课程设计进度安排指导教师签名:年月日系主任(责任教师)签名:年月日一、实验目的:1、深入了解和掌握同步时序逻辑电路的设计过程;2、了解74LS74、74LS08、74LS32、74LS86及74LS04芯片的功能;3、能够根据电路图连接好实物图,并实现其功能。

学会设计过程中的检验与完善。

二、题目理解和功能描述:用数字逻辑实验板和若干集成芯片实现如下功能:利用逻辑电平区域中八盏灯的任三盏作为实验的输入和输出,其中以1盏灯(如K1)作为输入x,用以改变输入的0、1特性,对应两位二进制数的四个状态,二位二进制计数器逻辑结构如图一所示。

计数器输出y 2 y 1输入x时钟输入图1 两位二进制数逻辑结构当输入x 为1时对应的输出序列:此时实验板上输出灯的亮暗变化如下:题目:二位二进制计数器。

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

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

计数器的实验报告

计数器的实验报告

计数器的实验报告计数器的实验报告摘要:本实验旨在通过设计和搭建一个计数器电路,来探究计数器的工作原理以及应用。

通过实验,我们可以了解计数器的基本结构和工作原理,并通过实验结果验证其性能。

引言:计数器是一种常见的数字电路,在现代电子设备中得到广泛应用。

它可以用于计数、计时、频率分频等多种应用场景。

本实验将通过搭建一个简单的二进制计数器电路,来深入了解计数器的原理和功能。

实验步骤:1. 准备实验所需材料和设备,包括集成电路、电路板、电源等。

2. 根据实验要求,设计并搭建计数器电路。

3. 连接电源,确保电路正常工作。

4. 进行实验测试,记录实验数据。

5. 分析实验结果,并进行讨论。

实验结果与分析:在实验中,我们成功搭建了一个4位二进制计数器电路。

通过给电路输入一个脉冲信号,我们观察到计数器按照二进制的方式进行计数。

当计数器达到最大值时,会自动归零,重新开始计数。

通过实验数据的记录和分析,我们发现计数器的计数速度与输入脉冲信号的频率有关。

当输入脉冲信号的频率较高时,计数器的计数速度也会增加。

而当输入脉冲信号的频率较低时,计数器的计数速度则会减慢。

此外,我们还观察到计数器的计数方式可以通过改变电路连接方式进行调整。

例如,我们可以将计数器设置为递减计数器,或者设置为只在特定条件下计数。

这些功能的实现依赖于电路设计和连接方式的调整。

讨论与总结:通过本次实验,我们深入了解了计数器的原理和功能。

计数器作为一种常见的数字电路,在现代电子设备中发挥着重要作用。

通过掌握计数器的工作原理,我们可以更好地理解和应用数字电路。

然而,本实验只是对计数器的基本原理进行了初步探究。

在实际应用中,计数器的功能和性能还有很多扩展和优化的空间。

例如,可以通过增加位数、设置预置值等方式来改进计数器的性能。

在今后的学习和实践中,我们将进一步深入研究计数器的原理和应用,探索更多的设计和优化方法。

通过不断学习和实践,我们可以提高对计数器的理解和应用能力,为数字电路的设计和应用做出更大的贡献。

计数器实验报告

计数器实验报告

计数器实验报告实验目的:通过实验了解计数器的原理和工作方式,掌握计数器的使用方法。

实验仪器:计数器、示波器、信号发生器、电压表。

实验原理:计数器是一种能够自动地对输入脉冲进行计数的电子器件。

它主要由时钟脉冲输入、计数寄存器、计数器控制逻辑以及显示器等部分组成。

实验步骤:1. 准备好实验仪器,包括计数器、示波器、信号发生器和电压表。

2. 将信号发生器的输出信号连接到计数器的时钟脉冲输入口。

3. 设置信号发生器的频率为100 Hz,并调整信号幅度为适当值。

4. 将计数器的数字显示设置为0。

5. 打开计数器和示波器电源,并打开示波器,将示波器的探头连接到计数器的输出端口。

6. 调节示波器的水平和垂直位置,以便能够观察到计数器的输出信号。

7. 开始计数,观察并记录计数器的输出信号和显示结果。

8. 改变信号发生器的频率和幅度,再次进行观察和记录。

实验结果:根据我们的实验步骤和操作,我们观察到计数器的输出信号呈现出逐渐增大的趋势,并且显示结果与输出信号一致。

当频率改变时,计数器的输出结果也会相应地改变。

实验分析:通过实验,我们了解了计数器的基本原理和工作方式,并成功地进行了计数器的实验操作。

实验结果表明,计数器能够准确地对输入脉冲进行计数,并将计数结果显示出来。

同时,我们还观察到了信号发生器频率和幅度对计数器结果的影响,这与我们的预期一致。

实验结论:通过本次实验,我们深入了解了计数器的原理和工作方式,掌握了计数器的使用方法。

实验结果表明,计数器能够准确地对输入脉冲进行计数,并将计数结果显示出来。

同时,我们还观察到了信号发生器频率和幅度对计数器结果的影响。

实验二 同步模4可逆计数器

实验二   同步模4可逆计数器

实验二同步模4可逆计数器
实验目的:1.掌握同步时序逻辑电路的设计方法。

2.加深对同步和时序两个概念的理解。

实验条件:
1.操作系统为WINDOWS 2000的计算机一台
2.Multisim 2001电子线路仿真软件一套
实验组件:双D触发器 74LS74 1片,三输入三与非门74LS10 1片,二输入二与非门74LS00 1片,二输入四异或门74LS86 1片
实验内容:
利用D触发器设计一个可逆模4计数器。

附:(选做)
利用JK触发器设计一个可逆模4计数器。

实验要求:
1.看懂光盘中的实验过程,并在Multisim 2001中使用逻辑分析仪验证结果.
2.使用方波发生器5V 1KHZ(器件库—电源—CLOCK SOURCE)提供脉冲,灯泡(器件库—指示器件—LAMP),开关(器件库—BASIC—SWITCH—SPDT)。

3.根据实验内容,列出真值表、逻辑函数式,并在下周三上交实验报告。

附:74LS10引脚图
74LS74的逻辑符号。

模可控计数器的设计

模可控计数器的设计

模可控计数器的设计-CAL-FENGHAI-(2020YEAR-YICAI)_JINGBIAN
杭州电子科技大学
实验报告
实验课程名称EDA技术
实验序号3
实验内容模可控计数器的设计班级
姓名张学涌
学号
指导教师黄继业
二○一一年十一月十日
实验目的与要求
实验目的:进一步学习quartus的文本设计,仿真,测试,以及硬件下载测试;
实验名称:模可控计数器的设计
实验原理
可用并行预置的加法器实现;将计数进位与预置数加载输入信号端或计数复位端相接,当计数值溢出时,在下一时钟预置的值加载进计数器,然后计数器再从这个预置数重新计数,从而实现模可控的计数器;
实验内容
模可控计数器的文本编辑如图:
仿真后的波形图为:
由图可以知道,几乎没有毛刺。

这是一个8位的计数器,预置数为F1,当计数到FF的时候,出现溢出,同一时刻LD(keep属性)变成1,。

到下一时刻的时候,计数器加载预置数,即F1,同一时刻PM变成1,然后计数器再从F1 重新计数,直到FF时又重新加载;
仿真后的RTL图为:
资源利用情况:
由图可以看到资源利用得非常少;
总结与体会
通过模可控器的设计,我懂得如何设计计数器的思路和原理,收获很深刻!。

计数器的实验报告

计数器的实验报告

一、实验目的1. 理解计数器的基本原理和工作方式;2. 掌握计数器的使用方法;3. 培养动手实践能力和团队协作精神。

二、实验原理计数器是一种用于计数的电子器件,能够对输入信号进行计数。

计数器的基本原理是利用触发器来实现计数功能。

触发器是一种具有记忆功能的电子器件,可以存储0或1的状态。

通过将触发器级联,可以实现多位计数。

本实验采用一个简单的异步二进制计数器,其工作原理如下:1. 当计数器复位时,所有触发器的状态都为0;2. 当计数器收到一个时钟信号时,最低位的触发器翻转状态;3. 如果最低位的触发器状态为1,则其输出信号将触发下一位触发器翻转状态;4. 依次类推,实现计数器的计数功能。

三、实验器材1. 计数器模块;2. 电源;3. 连接线;4. 逻辑分析仪;5. 示波器。

四、实验步骤1. 连接电路:将计数器模块、电源、连线等按实验电路图连接好;2. 复位计数器:将复位按钮按下,确保计数器处于初始状态;3. 观察计数过程:打开电源,观察计数器输出端的状态变化;4. 记录数据:使用逻辑分析仪或示波器记录计数器输出端的状态变化,并记录数据;5. 分析数据:根据记录的数据,分析计数器的计数过程和结果。

五、实验结果与分析1. 实验结果:计数器模块在接收到时钟信号后,输出端的状态按二进制递增的顺序变化,实现了计数功能;2. 分析:(1)复位功能:通过复位按钮,可以将计数器模块的状态恢复到初始状态,方便进行实验;(2)计数功能:计数器模块能够对输入的时钟信号进行计数,实现计数功能;(3)稳定性:在实验过程中,计数器模块的输出端状态变化稳定,未出现异常现象。

六、实验总结通过本次实验,我们掌握了计数器的基本原理和使用方法。

实验过程中,我们学会了如何连接电路、观察计数过程、记录数据和分析数据。

同时,我们还培养了动手实践能力和团队协作精神。

在今后的学习和工作中,我们将继续努力,不断提高自己的实验技能和团队协作能力。

变模计数器

变模计数器

南昌大学实验报告学生姓名:学号:专业班级:实验类型:□验证□综合□设计□创新实验日期:实验成绩:实验二模可变计数器设计(一)实验目的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、编辑好程序后进行仿真测试。

实验二_模可变计数器设计(模23模109)南昌大学

实验二_模可变计数器设计(模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. 理解二进制计数器的基本原理;2. 学习使用逻辑门和触发器构建二进制计数器电路;3. 验证二进制计数器的计数功能。

实验器材:1. 逻辑门集成电路(如与门、或门等);2. 触发器集成电路(如RS触发器、D触发器等);3. 连线、电源等实验器材。

实验步骤:1. 搭建基本的二进制计数器电路。

根据实验要求,选择合适的逻辑门和触发器集成电路,按照电路图连接各个元件,注意正确连接电源和接地线。

确保电路连接无误后,准备进行下一步实验。

2. 运行二进制计数器电路。

将电源接通,观察计数器的输出情况。

根据触发器的工作方式,当输入信号发生变化时,输出信号也会相应改变。

通过观察计数器的输出,我们可以判断其计数功能是否正常。

3. 验证计数器的正确性。

在实验中,我们可以通过手动改变输入信号来验证计数器的正确性。

例如,当计数器为4位二进制计数器时,我们可以分别输入0000、0001、0010、0011等不同的二进制数,观察计数器是否按照我们的输入进行正确计数。

实验结果:通过实验,我们成功搭建了一个4位二进制计数器电路,并验证了其计数功能的正确性。

无论是手动输入不同的二进制数,还是观察计数器的输出,都能得到预期的结果。

这表明我们的二进制计数器电路设计和搭建是成功的。

实验分析:二进制计数器是数字电路中的重要组成部分,它在计算机和电子设备中具有广泛的应用。

通过本次实验,我们深入了解了二进制计数器的基本原理和工作方式。

在实验过程中,我们通过搭建电路和观察输出结果,验证了计数器的正确性。

这为我们进一步理解和应用二进制计数器打下了坚实的基础。

结论:本实验通过搭建一个简单的二进制计数器电路,探索了其工作原理,并验证了其计数功能的正确性。

设计计数器的实验报告

设计计数器的实验报告

设计计数器的实验报告设计计数器的实验报告引言:计数器是数字电路中常见的一个组件,它可以用来记录和显示某个事件的次数或周期。

本实验旨在设计一个简单的二进制计数器,通过实际操作和观察,加深对计数器的原理和实现方式的理解。

一、实验目的本实验的主要目的是掌握计数器的设计原理和实现方法,具体包括以下几点:1. 了解计数器的基本概念和工作原理;2. 学习使用逻辑门和触发器构建计数器电路;3. 实际操作计数器电路并观察其输出结果。

二、实验器材1. 逻辑门集成电路(如与门、或门、非门等);2. 触发器集成电路(如RS触发器、D触发器等);3. 连线、电源、示波器等实验器材。

三、实验步骤1. 确定计数器的位数:根据实际需求,选择计数器的位数。

本实验以4位计数器为例。

2. 确定计数器的计数方式:根据实际需求,选择计数器的计数方式。

本实验以二进制计数方式为例。

3. 设计计数器的逻辑电路:根据所选择的位数和计数方式,设计计数器的逻辑电路。

以4位二进制计数器为例,可以使用4个D触发器构建。

将D触发器的时钟输入端串联,将每个D触发器的输出端连接到下一个D触发器的数据输入端,形成一个环形结构。

4. 连接电路并进行实验:按照设计好的逻辑电路连接实验器材,接入电源后,观察计数器的输出结果。

5. 调试和优化:如果计数器的输出结果不符合预期,可以检查电路连接是否正确,逻辑门和触发器是否工作正常,及时调试和优化。

四、实验结果与分析在本实验中,我们设计了一个4位二进制计数器,并成功实现了计数功能。

通过观察计数器的输出结果,可以发现计数器按照二进制方式进行计数,每次计数加1,当计数达到最大值时,会回到初始值重新开始计数。

通过实验可以得出以下结论:1. 计数器的位数决定了其能够表示的最大计数值,位数越多,最大计数值越大;2. 计数器的计数方式决定了其计数规律,二进制计数方式是最常见和简单的计数方式;3. 计数器的设计需要根据实际需求进行选择和优化,可以根据需要增加位数或者改变计数方式。

计数器实验报告

计数器实验报告

计数器实验报告实验目的,通过实验掌握计数器的工作原理和使用方法,加深对数字电路的理解。

一、实验原理。

计数器是一种能够按照一定规律进行计数的电路。

在数字电路中,计数器是十分常见的一种元件,它能够将输入的脉冲信号转换为相应的数字输出。

常见的计数器有二进制计数器、十进制计数器等。

二、实验器材。

1. 计数器芯片。

2. 电源。

3. 示波器。

4. 逻辑开关。

5. 连接线。

6. 示波器探头。

三、实验步骤。

1. 将计数器芯片插入实验板中,并连接好电源。

2. 将示波器探头连接到计数器芯片的输出端口。

3. 通过逻辑开关输入脉冲信号,观察示波器上的输出波形。

4. 调整逻辑开关的输入频率,记录下不同频率下的输出波形。

5. 分析实验结果,总结计数器的工作特性。

四、实验结果。

经过实验,我们观察到在不同的输入频率下,计数器的输出波形呈现出不同的计数规律。

当输入频率增加时,计数器的计数速度也随之增加。

通过示波器的观测,我们可以清晰地看到计数器的工作状态,从而加深对其工作原理的理解。

五、实验分析。

通过本次实验,我们深入了解了计数器的工作原理和特性。

计数器作为数字电路中的重要元件,广泛应用于各种计数和计时场合。

掌握计数器的工作原理对于进一步学习数字电路和逻辑设计具有重要意义。

六、实验总结。

本次实验通过实际操作,使我们更加深入地理解了计数器的工作原理和特性。

在今后的学习和工作中,我们将进一步应用和拓展所学知识,不断提高自己的实践能力和创新能力。

七、实验心得。

通过本次实验,我对计数器有了更加深入的了解,也增强了对数字电路的兴趣。

在未来的学习和工作中,我将继续努力,不断提升自己的专业能力,为实现自己的梦想奠定坚实的基础。

以上就是本次计数器实验的实验报告,希望能对大家有所帮助。

谢谢!。

二进制计数器实验报告

二进制计数器实验报告

二进制计数器实验报告《二进制计数器实验报告》摘要:本实验旨在设计和实现一个简单的二进制计数器电路,并通过实验验证其功能和性能。

实验结果表明,所设计的二进制计数器能够正确地进行二进制计数,并且在实际应用中具有良好的稳定性和可靠性。

引言:二进制计数器是数字电子电路中常见的一种逻辑电路,用于实现二进制数字的计数功能。

在许多数字系统中,二进制计数器被广泛应用于数据存储、时序控制和信号处理等方面。

因此,设计和实现一个高性能的二进制计数器对于数字系统的设计和应用具有重要意义。

实验目的:1. 设计一个简单的二进制计数器电路;2. 实现所设计的二进制计数器电路;3. 验证二进制计数器的功能和性能。

实验原理:二进制计数器是一种逻辑电路,它能够按照二进制数字的规律进行计数。

在本实验中,我们设计了一个4位二进制计数器,它由4个触发器和一组逻辑门组成。

当触发器接收到时钟信号时,它们将按照二进制的规律进行计数,并输出相应的计数结果。

通过适当的逻辑门电路,我们可以实现二进制计数器的复位、加载和输出功能。

实验步骤:1. 按照设计要求,选择适当的触发器和逻辑门,并绘制二进制计数器的电路图;2. 制作所设计的二进制计数器电路,并进行电路连接;3. 使用示波器和数字逻辑分析仪对二进制计数器进行测试,并记录测试结果;4. 对测试结果进行分析和总结。

实验结果:经过实验测试,我们发现所设计的二进制计数器能够正确地进行二进制计数,并且在时钟信号的作用下,能够稳定地输出相应的计数结果。

同时,我们还测试了二进制计数器的复位和加载功能,结果表明它们也能够正常工作。

因此,我们可以得出结论:所设计的二进制计数器具有良好的功能和性能。

结论:通过本次实验,我们成功地设计和实现了一个简单的二进制计数器电路,并验证了它的功能和性能。

这为我们进一步深入研究和应用二进制计数器奠定了基础,也为数字系统的设计和应用提供了重要的参考和借鉴。

在今后的研究和实践中,我们将继续探索二进制计数器的优化和应用,以满足不同数字系统的需求。

可变模计数器

可变模计数器

实验名称:可变模数计数器一、实验目的:设计一个可变模计数器,计数器由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. 理解计数器的原理和功能。

2. 掌握集成触发器构成计数器的方法。

3. 学会使用中规模集成计数器,并进行功能测试。

4. 熟悉Proteus仿真软件的使用,验证电路设计的正确性。

三、实验原理计数器是一种用以实现计数功能的数字电路,其基本原理是利用触发器实现计数功能。

常见的触发器有D触发器、T触发器、JK触发器等。

本实验采用D触发器构成两位计数器。

四、实验仪器与材料1. 实验箱2. 集成触发器(如CC4013)3. 中规模集成计数器(如CC40192)4. 7段数码管5. 电阻、电容等6. Proteus仿真软件五、实验步骤1. 电路设计(1)根据实验要求,设计两位计数器电路,包括D触发器、CC40192计数器、7段数码管等元件。

(2)利用Proteus仿真软件绘制电路原理图,并进行仿真测试。

2. 电路搭建(1)按照电路原理图,在实验箱上搭建两位计数器电路。

(2)检查电路连接是否正确,确保电路连接牢固可靠。

3. 功能测试(1)给计数器电路通电,观察7段数码管显示的计数值。

(2)通过按键控制计数器的计数方向(加法或减法)。

(3)测试计数器的计数范围、计数速度等性能指标。

4. 仿真测试(1)在Proteus软件中,将设计的电路原理图导入仿真环境。

(2)设置仿真参数,如时钟频率、计数范围等。

(3)观察仿真结果,验证电路设计的正确性。

六、实验结果与分析1. 电路搭建按照实验步骤,成功搭建了两位计数器电路,并连接了7段数码管进行显示。

2. 功能测试通过按键控制,计数器可以正常进行加法或减法计数,计数值在0-99之间变化。

7段数码管显示的计数值准确无误。

3. 仿真测试在Proteus软件中,对设计的电路进行了仿真测试。

EDA实验报告实验二:模可变计数器的实验报告

EDA实验报告实验二:模可变计数器的实验报告

Nb大学实验报告学生姓名:EDA教父学号:61xxxx099 专业班级:通信101实验类型:□验证□综合□设计□创新实验日期:2012-10-8 实验成绩:实验二模可变计数器的设计一实验要求利用控制位M来改变模长要求M=1时模为114计数,M=0时模为16计数;二实验步骤1.建立工作库文件夹,输入计数器的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);SIGNAL CNT8: STD_LOGIC_VECTOR(2 DOWNTO 0);SIGNAL A : STD_LOGIC_VECTOR(3 DOWNTO 0);SIGNAL MODEL : STD_LOGIC_VECTOR(11 DOWNTO 0);BEGINP1:PROCESS(CLK)BEGINIF CLK'EVENT AND CLK = '1' THEN CNT<=CNT+1;IF CNT=130 THEN CLK1<='1';ELSE CLK1<='0';END IF;END IF;END PROCESS;P2:PROCESS(EN,RST,M,CLK1)BEGINCASE M ISWHEN '0'=>MODEL<="000000010101";WHEN '1'=>MODEL<="000100010011";END 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 THENJ<=J+7;IF SW=9 THENJ<=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)BEGIN IF 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 ISWHEN "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.选目标器件CycloneII中的EP2C35F672C8并编译。

二位计数器实验报告

二位计数器实验报告

二位计数器实验报告王林2021141444014一、实验目的:1.设计一个二位的计数器;2.熟悉QuartusII软件的功能和环境。

二、详细设计:设计步骤如下:1.设计任意二进制两位计数器,包括时钟信号CLK,实现计数功能;本实验设计了一个两位24位计数器。

当位数达到9时,十位加一。

当10位的位数达到2位,位数达到3位时,将清除以实现24位计数功能。

2.编译、查找错误并仿真,并下载到板子上验证结果。

三、源代码:libraryieee;使用IEEE。

标准逻辑1164。

全部的使用IEEE。

标准逻辑。

全部的使用IEEE。

标准逻辑无符号。

全部的entityqua1is--定义实体,它说明输入/输出端口port(clk:instd_logic;--计数时钟q:超出逻辑向量(7downto);——计数输出C:输出逻辑);endqua1;architectureaofqua1is--定义结构体,它说明具体的功能signalqa:std_logic_vector(3downto0);signalqb:std_logic_vector(3downto0);signal cy:std_logic;--申明变量begin进程(clk)开始ifclk'eventandclk='1'then--异步清零如果(QA=9)或(QA=3和QB=2),那么——当QA=9或QA=3和QB=2时,QA被清除qa<=\cy<='0';elsifqa=8then--qa=8时qa加一,cy=1qa<=qa+1;cy<='1';否则——在其他情况下,QA++,cy=0qa<=QA+1;cy<='0';endif;endif;endprocess;--结束process(clk,cy)begin如果clk'event和clk='1'then--异步调零if(qa=3andqb=2)thencqa=3且qb=2时qb清零c=1qb<=\c<='1';Elsifcy='1'然后--CY=1,QB输入一个位,QB<=QB+1;c<='0';elsec其他情况c=0c<='0';endif;endif;终末过程;q(7downto4)<=qb;--输出q(3downto0)<=qa;enda;四、模拟结果:五、实验感想:通过这次实验,我熟悉了VHDL语言的应用,并且在制作计数器的过程中遇到了一些问题很多问题和困难,在和同学交流和查阅了相关资料后解决了这个问题,在这个过程中也提高了自己。

实验二模可变计数器doc

实验二模可变计数器doc

南昌大学实验报告学生姓名:学号:专业班级:实验类型:□验证□综合■设计□创新实验日期:实验二模可变计数器的设计一、实验目的1.学习计数器的VHDL设计、波形仿真和硬件测试2.学会自己设计程序二、实验内容与要求1.计设置一位控制模的位M,要求M=0:模23计数;当M=1:模109计数。

2.计数结果用三位数码管显示,显示BCD码;3.给出此项设计的仿真波形;4.应用实验装置验证此计数器的功能。

三、实验思路1、要求分别实现模23和模109的计数,因些我分别用Q1、Q2、Q3 代表个位十位和百位。

还有一个控制模的位M,当M为0时实现模23计数,只用到Q1和Q2分别为个位和十位;当M为1时实现模109计数,用Q1 、Q2、Q3 分别为个位十位和百位计数。

由于端口不能参与运算,因些在结构体中定义了cq1、cq2、cq3三个信号,分别用来对应Q1 Q2 Q3;在程序的最后用端口接收信号即可。

2.由于要求用三个数码管显示,每个数码管的引脚是四根,因此不要求我们译码,因此定义三个端口Q1 Q2 Q3类型为标准逻辑矢量,位宽为4;这样个位十位和百位每个位就是由四位电平构成的BCD码。

在结构体中定义的信号cq1 cq2 cq3也需要是标准逻辑矢量位宽为4.3、然后就是进程敏感信号为RST EN M 三个,当RST为低电平,EN为高电平时则计数,否则不计数。

4、计数时分两种情况(1)当M为0时,实现模23计数,当个位为9则向十位进位,并个位清0,当个位小于9,则个位自身加1;计数到22时当下一个时钟上升沿到来时就清0重计。

(2)当M为1时,实现模109计数,当个位为9则向十位进位,并个位清0,当个位小于9,则个位自身加1;当个位和十位均为9时,就向百位进位,同时个位和十位自身清0;计数到108时当下一个时钟上升沿到来时就清0重计。

四、实验程序(部分程序摘自书上模10计数器设计,课本113页)LIBRARY IEEE;USE --设计库和程序包名,其中将标准逻辑矢量--数据。

可变模计数器

可变模计数器

一、实验目的: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 //。

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

南昌大学实验报告学生姓名:学号:专业班级:中兴101班实验类型:□验证□综合■设计□创新实验日期:2012、10、18成绩:实验二模可变计数器的设计一、实验目的1.学习计数器的VHDL设计、波形仿真和硬件测试;2.学会自己设计程序;3.学会设计模可变计数器;4.学习多层次设计方法。

二、实验内容与要求1.计设置一位控制模的位M,要求M=0:模23计数;当M=1:模109计数。

2.计数结果用静态数码管显示,一个四位二进制表示0~9中的一个数;3.给出此项设计的仿真波形;4.应用实验装置验证此计数器的功能。

三、实验思路1.按照实验要求,本实验可分为四个模块进程:分频、模23与109计数转换、数码管控制、七段译码。

2.模可变计数器原理:即在原有的模值计数器上加入模值转换功能3.计数器的数码管显示需注意十位和百位的进位即:当个位数的数值为9的下一个脉冲来时转换为,同时向十位进一,转换的算法为:9(1001)+7(0111)=0(0000),并进一位;当数值为99时,用同样的方法转换:153(1001 1001B,数码管显示99)+103(01100111B)=100(0001 0000 0000);4.要求分别实现模23和模109的计数,因此我分别用buffer变量GW、SW 、 BW 代表个位、十位、百位。

还有一个控制模的位M,当M为0时实现模23计数,只用到GW和SW分别为个位和十位计数;当M为1时实现模109计数,用GW 、SW、 BW 分别为个位十位和百位计数。

由于端口不能参与运算,因些在结构体中定义了se10、 sel1、 sel2三个buffer变量,分别用来对应SEL(0)、 SEL(1)、SEL(2);在程序的最后用端口接收信号。

5.进程敏感信号为RST EN M 三个,当RST为低电平,EN为高电平时则计数,否则不计数。

6.位选信号的设置:用整形变量CNT8分别使不同的位选信号对应不同的输入,而得到不同输出。

对应关系:表一位选信号7.模23与模109计数转换思路框图:图一思维框图四.实现方法一:原理图输入法设计(自己独立完成)1. 建立文件夹建立自己的文件夹(目录),如c:\myeda,进入Windows操作系统Quartus II不能识别中文,文件及文件夹名不能用中文。

2. 原理图设计输入打开Quartus II,选菜单File→New,选择“Device Design File->Block Diagram->Schematic File”项。

点击“OK”,在主界面中将打开“Block Editor”窗口。

(1)分频器模块:(实体名为CLKDIV)--时间:2012年9月28号--版本:7.0--功能:分频器(100分频)LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_ARITH.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY CLKDIV IS—定义实体名为CLKDIVPORT(CLK : IN STD_LOGIC;--输入信号为自带时钟CLK_DIV : OUT STD_LOGIC);--输出信号为分频后的时钟信号END CLKDIV;ARCHITECTURE RT1 OF CLKDIV ISSIGNAL DA TA:INTEGER RANGE 0 TO 100;--实现100分频SIGNAL CLK_TEMP:STD_LOGIC;BEGINPROCESS(CLK)BEGINIF RISING_EDGE(CLK) THENIF(DATA=100) THENDATA<=0;CLK_TEMP<=NOT CLK_TEMP;ELSEDATA<=DATA+1;END IF;END IF;CLK_DIV<=CLK_TEMP;END PROCESS;END RT1;(2)计数模块:(实体名为COUNT)--时间:2012年9月28号--版本:7.0--功能:模可变计数器LIBRARY IEEE ;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY count ISPORT (CLK,RST,EN,M : IN STD_LOGIC;--输入变量为CLK、复位信号:RST、使能端信号:EN、--以及模变转换信号:MCQ1,CQ2,CQ3 : OUT STD_LOGIC_VECTOR (3 DOWNTO 0) ;--输出信号为计数的个、十、百位COUT : OUT STD_LOGIC ) ;--count为进位位END ENTITY count;ARCHITECTURE one OF count ISSIGNAL model : INTEGER;BEGINPROCESS (CLK,RST,EN,M,model)V ARIABLE CQI : STD_LOGIC_VECTOR (11 DOWNTO 0) ;BEGINIF M = '0' THEN model <= 34;ELSIF M = '1' THEN model <= 264;ELSE model <= 0;END IF;IF RST = '1' THEN CQI := (OTHERS => '0');ELSIF CLK'EVENT AND CLK = '1' THENIF EN = '1' THENIF CQI < model THENIF CQI(7 DOWNTO 0) = 153 THEN CQI := CQI + 103 ;ELSIF CQI(3 DOWNTO 0) = 9 THEN CQI := CQI + 7 ;ELSE CQI := CQI + 1 ;END IF;ELSE CQI := (OTHERS => '0') ;END IF;END IF;END IF;IF CQI = model THEN COUT <= '1';ELSE COUT <= '0';END IF;CQ1 <= CQI(3 DOWNTO 0);CQ2 <= CQI(7 DOWNTO 4);CQ3 <= CQI(11 DOWNTO 8);END PROCESS;END ARCHITECTURE one;(3)数码管显示模块:(实体名为scan_led)--时间:2012年9月28号--版本:7.0--功能:数码管显示LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY scan_led ISPORT(clk : IN STD_LOGIC;data1,data2,data3: IN STD_LOGIC_VECTOR(3 DOWNTO 0);scan : OUT STD_LOGIC_VECTOR(6 DOWNTO 0);--输出数码管的7位显示choose: OUT STD_LOGIC_VECTOR(2 DOWNTO 0));--数码管位选信号END ENTITY;ARCHITECTURE one OF scan_led ISSIGNAL cout8:STD_LOGIC_VECTOR(2 DOWNTO 0);SIGNAL A :STD_LOGIC_VECTOR(3 DOWNTO 0);BEGINP1:PROCESS(cout8)—数码管动态扫描BEGINCASE cout8 ISWHEN "000" => choose <= "000"; A <= "0000";WHEN "001" => choose <= "001"; A <= "0000";WHEN "010" => choose <= "010"; A <= "0000";WHEN "011" => choose <= "011"; A <= "0000";WHEN "100" => choose <= "100"; A <= "0000";WHEN "101" => choose <= "101"; A <= data3;WHEN "110" => choose <= "110"; A <= data2;WHEN "111" => choose <= "111"; A <= data1;WHEN OTHERS => NULL;END CASE;END PROCESS P1;P2:PROCESS(clk)BEGINIF clk'EVENT AND clk ='1' THEN cout8 <= cout8+1;END IF;END PROCESS P2;P3:PROCESS(A)—数码管译码BEGINCASE A ISWHEN "0000"=> scan <="0111111"; --0WHEN "0001"=> scan <="0000110"; --1WHEN "0010"=> scan <="1011011"; --2WHEN "0011"=> scan <="1001111"; --3WHEN "0100"=> scan <="1100110"; --4WHEN "0101"=> scan <="1101101"; --5WHEN "0110"=> scan <="1111101"; --6WHEN "0111"=> scan <="0000111"; --7WHEN "1000"=> scan <="1111111"; --8WHEN "1001"=> scan <="1101111"; --9WHEN "1010"=> scan <="1110111"; --AWHEN "1011"=> scan <="1111100"; --BWHEN "1100"=> scan <="0111001"; --CWHEN "1101"=> scan <="1011110"; --DWHEN "1110"=> scan <="1111001"; --EWHEN "1111"=> scan <="1110001"; --FWHEN OTHERS=> NULL;END CASE;END PROCESS P3;END;2.包装元件入库。

相关文档
最新文档