EDA十进制计数器的设计
- 格式:doc
- 大小:326.00 KB
- 文档页数:7
物理与电气工程学院课程设计报告十进制计数器设计一、实验任务熟悉QuartusⅡ的Verilog HDL文本设计流程全过程,学习计数器的设计、仿真和硬件测试。
EDA的设计流程为原理图/HDL文本编辑、逻辑综合、FPGA/CPLD适配、FPGA/CPLD编程下载。
EDA的设计所用的软件是Quartus II 软件,Quartus II 软件可以用图形输入、VHDL文本输入的方法输入,之后进行时序仿真,EDA设计流程的最后一步是将程序下载到开发板上,进行硬件测试。
二、实验原理根据频率的定义和频率测量的基本原理,测定信号的频率必须有一个脉宽为1秒的对输入信号脉冲计数允许的信号;1秒计数结束后,计数值锁入锁存器的锁存信号和为下一测频计数周期作准备的计数器清0信号。
这3个信号可以由一个测频控制信号发生器产生,即图6-24中的TESTCTL,它的设计要求是,TESTCTL的计数使能信号CNT_EN能产生一个1秒脉宽的周期信号,并对频率计的每一计数器CNT10的ENA使能端进行同步控制。
当CNT_EN高电平时,允许计数;低电平时停止计数,并保持其所计的脉冲数。
在停止计数期间,首先需要一个锁存信号LOAD的上跳沿将计数器在前1秒钟的计数值锁存进各锁存器REG4B中,并由外部的7段译码器译出,显示计数值。
设置锁存器的好处是,显示的数据稳定,不会由于周期性的清零信号而不断闪烁。
锁存信号之后,必须有一清零信号RST_CNT对计数器进行清零,为下1秒钟的计数操作作准备。
按规定编写程序如下:module CNT10 (CLK,RST,EN,LOAD,COUT,DOUT,DATA);input CLK,EN,RST,LOAD;input [3:0] DATA;output [3:0] DOUT;output COUT;reg [3:0] Q1 ; reg COUT ;assign DOUT = Q1;always @(posedge CLK or negedge RST) beginif (!RST) Q1 <= 0;else if (EN) beginif (!LOAD) Q1 <= DATA;else if (Q1<9) Q1 <= Q1+1;else Q1 <= 4'b0000; endendalways @(Q1)if (Q1==4'h9) COUT = 1'b1;else COUT = 1'b0;endmodule编写Verilog程序描述一个电路,实现以下功能:设计带有异步复位、同步计数使能和可预置型的十进制计数器。
1)测控时序电路设计程序:library ieee;use ieee.std_logic_1164.all; use ieee.std_logic_unsigned.all; entity ftctrl isport(clkk:in std_logic;cnt_en:out std_logic;rst_cnt:out std_logic;load:out std_logic); end ftctrl;architecture behave of ftctrl is signal div2clk:std_logic; beginprocess(clkk)beginif clkk'event and clkk='1' thendiv2clk<=not div2clk;end if;end process;process(clkk,div2clk)beginif clkk='0' and div2clk='0' thenrst_cnt<='1';elserst_cnt<='0';end if;end process;load<=not div2clk;cnt_en<=div2clk;end behave;(2)顶层中的SCAN_LED模块是改进后带输入数据锁存功能的7段动态扫描显示译码器,其参考程序如下:LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY SCAN_LED ISPORT (CLK : IN STD_LOGIC;LK:IN STD_LOGIC;DIN:IN STD_LOGIC_VECTOR(31DOWNTO 0);SG: OUT STD_LOGIC_VECTOR(6DOWNTO 0);BT: OUT STD_LOGIC_VECTOR(2DOWNTO 0) );END;ARCHITECTURE one OF SCAN_LED ISSIGNAL CNT8 : STD_LOGIC_VECTOR(2DOWNTO 0);SIGNAL DOUT: STD_LOGIC_VECTOR(31DOWNTO 0);SIGNAL A : STD_LOGIC_VECTOR(3DOWNTO 0);BEGINP1:PROCESS(LK,DIN) BEGINIF LK'EVENT AND LK='1' THEN DOUT<=DIN; END IF; END PROCESS P1;P2:PROCESS( CNT8 ) BEGIN CASE CNT8 ISWHEN "000" => BT <= "000" ; A <= DOUT(3 DOWNTO 0);WHEN "001" => BT <= "001" ; A <= DOUT(7 DOWNTO 4);WHEN "010" => BT <= "010" ; A <= DOUT(11 DOWNTO 8);WHEN "011" => BT <= "011" ; A <= DOUT(15 DOWNTO 12);WHEN "100" => BT <= "100" ; A <= DOUT(19 DOWNTO 16);WHEN "101" => BT <= "101" ; A <= DOUT(23 DOWNTO 20);WHEN "110" => BT <= "110" ; A <= DOUT(27 DOWNTO 24);WHEN "111" => BT <= "111" ; A <= DOUT(31 DOWNTO 28);WHEN OTHERS => NULL ;END CASE;END PROCESS P2; P3: PROCESS(CLK)BEGINIF CLK'EVENT AND CLK = '1' THEN CNT8 <= CNT8 + 1;END IF;END PROCESS P3;P4: PROCESS( A )BEGINCASE A ISWHEN "0000" => SG <= "0111111";WHEN "0001" => SG <= "0000110";WHEN "0010" => SG <= "1011011";WHEN "0011" => SG <= "1001111";WHEN "0100" => SG <= "1100110";WHEN "0101" => SG <= "1101101";WHEN "0110" => SG <= "1111101";WHEN "0111" => SG <= "0000111";WHEN "1000" => SG <= "1111111";WHEN "1001" => SG <= "1101111";WHEN "1010" => SG <= "1110111";WHEN "1011" => SG <= "1111100";WHEN "1100" => SG <= "0111001";WHEN "1101" => SG <= "1011110";WHEN "1110" => SG <= "1111001";WHEN "1111" => SG <= "1110001";WHEN OTHERS => NULL ;END CASE ;END PROCESS P4;END;(3)CNT10_8是8位10进制计数器,其底层是由8个10进制计数器串接而成,电路图如下所示:(4)利用以上各功能模块生成封装,产生频率计的顶层原理图,如下:(1)重新设计FTCTRL模块,完成8位10进制频率计设计。
徐州工业职业技术学院班级:电子与电气071姓名:徐勤学号:730516137指导老师:张江伟内容摘要:EDA 技术是依赖功能强大的计算机,在EDA 工具软件平台上来实现既定的电子线路系统功能。
就因为EDA 有如此大的功能,因此选择EDA 来实现数字钟的设计。
数字钟是一种用数字显示秒、分、时的计时装置,与传统机械钟相比,它具有走时准确、显示直观、无机械转动装置等优点,因而得到广泛应用。
本课题是利用EDA 技术用集成电路设计一个数字钟,即显示秒、分、时,分别用60、60、24进制计数器,秒、分均为六十进制,即显示00~59,它们的个位是十进制,十位是六进制。
时为二十四进制,显示00~23,个位仍为十进制,而十位为二进制,但当十位计到2、个位计到4时清零,就为二十四进制了,其中组成秒、分、时的芯片均用7490来实行,先用它实现十进制,然后分别用两个十进制模板来实现六十进制、二十四进制,最终实现数字钟。
但这只是用4位二进制数来表示1位十进制数,因此要将这些二进制码,通过译码器7448来实现十进制文字符号的转换,将数字钟的计时状态直观清晰的反应出来,然后通过EDA 的坡形仿真,来检验其真确性。
这一设计原本原理图复杂,所用连线众多,但因EDA 具有把原理图模板化的功能,因此,最终生成的数字钟原理图简单、清晰、明了。
(参考文献《EDA 技术及其应用》、《电子技术技能实验实训指导》)一.设计要求:设计一个综合性的数字计时钟,要求能实现时、分、秒的计数功能,,同时将结果通过4个7段数码管显示,具体框图如下:根据设计要求,综合数字钟电路可分为计秒电路、计分电路、计时电路3个子模块,这3个子模块必须都具有预置、计数、进位功能,设计思想如下:A.计秒电路:以直接输入或由分频器产生的秒脉冲作为计秒电路的计数时钟信号,待计数至60瞬间,进位,计分电路加1,而计秒电路则清零并重新计秒。
B.计分电路:计秒电路得到进位脉冲,来一个脉冲就加1,当得到60个脉冲,即计数至60瞬间,进位,计时电路加1,而计秒、计分电路则清零,并重新计秒、分。
EDA实验5 计数器设计一、实验目的计数器是实验中最为经常使用的时序电路模块之一,本实验的要紧目的是把握利用HDL描述计数器类型模块的大体方式。
二、实验仪器1.EDA开发软件一套2.微机一台3.实验开发系统一台三、实验说明计数器是数字电路系统中最大体的功能模块之一,设计时能够采纳原理图或HD语言完成。
下载验证时的计数时钟可选用持续或单脉冲,并用数码管显示计数值。
四、实验要求1.设计一个带有计数许诺输入端、复位输入端和进位输出端的十进制计数器。
2.编制仿真测试文件,并进行功能仿真。
3.下载并验证计数器功能。
4.为上述设计成立元件符号。
五、实验进程LIBRARY IEEE;USE counter ISPORT (CLK,RST,EN : IN STD_LOGIC;CQ : OUT STD_LOGIC_VECTOR(3 DOWNTO 0); COUT : OUT STD_LOGIC );END counter;ARCHITECTURE behave OF counter ISBEGINPROCESS(CLK, RST, EN)VARIABLE CQI : STD_LOGIC_VECTOR(3 DOWNTO 0); BEGINIF RST ='1' THEN CQI := (OTHERS => '0');ELSIF CLK'EVENT AND CLK = '1' THENIF EN = '1' THENIF CQI < "1001" THEN CQI := CQI + 1;ELSE CQI :=(OTHERS => '0' );END IF;END IF;END IF;IF CQI = "1001" THEN COUT <= '1' ;ELSE COUT <= '0' ;END IF;CQ <= CQI; END PROCESS;END behave;2.实验结果。
实验报告课程名称:EDA技术与FPGA应用设计课设题目:2位十进制计数器实验地点:信息学院楼CPLD实验室专业班级:学号:学生姓名:指导教师:张文爱2016年4月1日实验二2位十进制计数器一、实验目的1.熟悉ispDesignEXPERT System、QuartusII的原理图设计流程的全过程。
2.学习简单时序电路的设计方法。
3.学习EDA设计的仿真和硬件测试方法。
二、实验原理2位十进制计数器参考原理图如图1所示,也可以采用其他元件实现。
图1.用74LS390设计一个有时钟使能的2位十进制计数器三、实验任务(1)设计2位十进制计数器电路。
(2)在EDA环境中输入原理图。
(3)对计数器进行仿真分析、引脚锁定、硬件测试。
四、实验步骤1、设计电路原理图设计含有时钟使能及进位扩展输出的十进制计数器。
可以选用双十进制计数器74LS390或者十进制计数器74LS160和其他一些辅助元件来完成。
2、计数器电路的实现。
绘制过程中应特别注意图形设计规则中信号标号和总线的表达方式。
若将一根细线变成一粗线显示的总线,可以先单机使其变红,再选Option选项中的Line Style;若在某线上加信号标号,也应该点击该线某处使其变成红色,然后键入标号名称,标有相同标号的线段可视为连接线段,不必直接连接。
总线可以以标号方式进行连接。
3、编程测试。
五、实验结果图2.用74LS390设计一个有时钟使能的2位十进制计数器六、实验感想通过本次实验学会了简单时序电路的设计方法。
学会了使用QuartusII软件调用元器件库进行原理图设计的方法和设计流程。
这次实验让我学会了用FPGA设计电路并且学会了FPGA的设计过程和实现方法。
提高了动手能力,加深了对所学知识的理解。
这次EDA实验,提高了动手能力,加深了对所学知识的理解。
目录一、摘要二、任务要求三、基本原理四、实现方法五、基本过程六、分析与结论七、课程总结一、摘要电子设计自动化EDA技术课的目的在于培养学生掌握可编程逻辑器件基本的编程方法与开发应用技能。
在掌握了EDA技术的基础知识、基本操作和Quartus II软件的基本应用与一般流程后,学习EDA技术最有效的方法就是进行EDA 技术的综合应用设计。
本次设计阐述了100以内的十进制计数器的设计思路、VHDL 源程序、管脚设置、时序仿真和逻辑综合结果及分析。
十进制计数器由BCD码(二—十进制码)来设计,把一个数拆为个位(低四位)和十位(高四位),首先设定初值然后计数,同时对部分二进制数进行十进制调整。
二、任务要求首先设定100以内的十进制计数初值,而后每来一次脉冲降沿,计数值加1,加到99,然后计数值回0。
三、基本原理十进制计数器由BCD码(二—十进制码)来设计,把一个数拆为个位FD (低四位)和十位SD(高四位)。
设定计数初值高四位H和低四位L,LD为‘1’时置数,否则开始计数。
当个位为9即二进制的1001时且十位非9时,再来一次脉冲(CLK为0)计数时,个位为0即低四位清零,十位加1即高4位加1;十位为9即1001,且个位非9时,个位加1;十位为9且个位也为9时,个位十位全为0即高、低四位都清零。
四、实现方法1.VHDL源程序如下:LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY CNT10 ISPORT(CLK,LD:IN STD_LOGIC;H:IN STD_LOGIC_VECTOR(3 DOWNTO 0);L:IN STD_LOGIC_VECTOR(3 DOWNTO 0);FD:BUFFER STD_LOGIC_VECTOR(3 DOWNTO 0); SD:BUFFER STD_LOGIC_VECTOR(3 DOWNTO 0)); END ENTITY CNT10;ARCHITECTURE ART OF CNT10 ISBEGINPROCESS(CLK) ISBEGINIF(CLK'EVENT AND CLK='0')THENIF(LD='1')THENSD<=H;FD<=L;ELSIF(LD='0')THENIF(FD="1001")THENIF(SD="1001")THENFD<="0000";SD<="0000";ELSEFD<="0000";SD<=SD+1;END IF;ELSEFD<=FD+1;END IF;END IF;END IF;END PROCESS;END ARCHITECTURE ART;2、生成器件管脚如图1-1所示图1-1五、基本过程1、打开Quartus II 6.0软件,新建工程文件CNT10.qpf,然后新建VHDL 文件CNT10.vhd,输入VHDL 源程序,如图1-2图1-22、编译输入成功的VHDL源程序文件,并调试修改错误,最终使编译成功,如图1-3图1-33、设置管脚,使之在空心圆处设置输入端口CLK、H(3~0)、L(3~0)、LD以及输出端口FD(3~0)、SD(3~0),如图1-4图1-44、查看生成的器件,新建CNT10.bsf文件,找到project里的CNT10,并双击,即可观察到如图1-5所示的器件CLK LDH[3..0] L[3..0]FD[3..0] SD[3..0]CNT10inst图1-55、新建.vwf文件,导入输入、输出端口,并设置输出端口时钟信号CLK的波形以及计数初值(例如00100011即23)然后保存文件,如图1-6图1-66、在图1-6的界面中,编译,得到输出波形如图1-7、1-8所示,并分析数据验证是否符合设计要求。
EDA技术及应用实验报告——有时钟使能的两位十进制计数器设计班级:XXX姓名:XXX学号:XXX一、实验目的:1、学习MAX+PLUSⅡ软件的使用,包括软件安装及基本的使用流程。
2、掌握用原理图输入法设计简单组合电路的方法和详细设计流程。
3、掌握原理图的层次化设计方法。
二、实验原理:频率计的核心元件之一是含有时钟使能及进位扩展输出的十进制计数器。
为此这里拟用一个双十进制计数74390和其它一些辅助元件来完成。
电路原理图应该如图所示。
图中,74390连接成两个独立的十进制计数器,待测频率信号clk通过一个与门进入74390的计数器1的时钟输入端1CLKA,与门的另一端由计数使能信号enb控制:当enb = '1' 时允许计数;enb = '0' 时禁止计数。
计数器1的4位输出q[3]、q[2]、q[1]和q[0]并成总线表达方式即q[3..0],由图3-24左下角的OUTPUT输出端口向外输出计数值,同时由一个4输入与门和两个反相器构成进位信号进入第2个计数器的时钟输入端2CLKA。
第2个计数器的4位计数输出是q[7]、q[6]、q[5]和q[4],总线输出信号是q[7..4]。
这两个计数器的总的进位信号,即可用于扩展输出的进位信号由一个6输入与门和两个反相器产生,由cout输出。
clr是计数器的清零信号。
三、实验内容和步骤:1、打开原理图编辑器,有时钟使能的两位十进制计数器的设计。
2、编译3、波形仿真,由上图仿真得到电路的仿真波形。
由波形图可见,电路的功能完全符合原设计要求:当clk输入时钟信号时,clr信号具有清0功能,当enb为高电平时允许计数,低电平时禁止计数;当低4位计数器计到9的向高4位计数器进位,另外由于图中没有显示高4位计数器计到9,故看不到count的进位信号。
4、引脚锁定并下载。
实验总结通过本实验,学习了有时钟使能的两位十进制计数器原理图输入的设计,进一步熟练掌握了原理图输入设计的方法。
2.1 十进制计数器流程2.11 建立工作库文件夹和编辑设计文件任何一项设计都是一项工程(Project),都必须首先为此工程建立一个放置与此工程相关的所有设计文件的文件夹。
此文件夹将被EDA软件默认为工作库(Work Library)。
一般,不同的设计项目最好放在不同的文件夹中,而同一工程的所有文件都必须放在同一文件夹中。
在建立了文件夹后就可以将设计文件通过Quartus II的文本编辑器编辑并存盘,步骤如下:(1)新建一个文件夹。
这里假设本项设计的文件夹取名为CNT10B,在D盘中,路径为d:\cnt10b 。
注意,文件夹名不能用中文,也最好不要用数字。
(2)输入源程序。
打开QuartusII,选择菜单File→New。
在New窗口中的Device Design Files中选择编译文件的语言类型,这里选择“VHDL File”(如图2-1所示)。
然后在VHDL 文本编译窗中输入(键入)例3-22所示的VHDL示例程序。
图2-1 选择编辑文件的语言类型《示例程序和实验指导课件位置》:\EDA_BOOK3_FOR_1C6\chpt4\EXPT53_cnt10\工程cnt10【例3-22】LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY CNT10 ISPORT (CLK,RST,EN : IN STD_LOGIC;CQ : OUT STD_LOGIC_VECTOR(3 DOWNTO 0);COUT : OUT STD_LOGIC );END CNT10;ARCHITECTURE behav OF CNT10 ISBEGINPROCESS(CLK, RST, EN)VARIABLE CQI : STD_LOGIC_VECTOR(3 DOWNTO 0);BEGINIF RST = '1' THEN CQI := (OTHERS =>'0') ; --计数器异步复位ELSIF CLK'EVENT AND CLK='1' THEN --检测时钟上升沿IF EN = '1' THEN --检测是否允许计数(同步使能)IF CQI < 9 THEN CQI := CQI + 1; --允许计数, 检测是否小于9 ELSE CQI := (OTHERS =>'0'); --大于9,计数值清零END IF;END IF;END IF;IF CQI = 9 THEN COUT <= '1'; --计数大于9,输出进位信号ELSE COUT <= '0';END IF;CQ <= CQI; --将计数值向端口输出END PROCESS;(3)文件存盘。
EDA实验报告CNT9999计数器的设计指导老师:***班级:电技1503学号:***********姓名:***交通工程学院2017.10.15实验一0~9999的计数器电路的设计1.实验目的(1)进一步熟悉和掌握Quartus II软件的使用。
(2)进一步熟悉和掌握GW48-CK或其他EDA实验开发系统的使用。
(3)学习和掌握VHDL进程语句和元件例化语句的使用。
2.实验内容设计并调试好一个计数范围为0~9999的4位十进制计数器电路CNT9999,并用GW48-CK或其他EDA实验开发系统进行硬件验证。
3实验条件(1)开发软件:Quartus II 13.0。
(2)实验设备:GW48-CK EDA 实验开发系统。
(3)拟用芯片:EP3C55F484C7。
4.实验设计1)系统原理框图为了简化设计并便于显示,本计数器电路CNT9999的设计分为两个层次,其中底层电路包括四个十进制计数器模块CNT10,再由这四个模块按照图1.1所示的原理图构成顶层电路CNT9999.图1.1 CNT9999电路原理图2)VHDL程序计数器CNT9999的底层和顶层电路均采用VHDL文本输入,有关VHDL程序如下。
CNT10的VHDL源程序:--CNT10.VHDLIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY CNT10 ISPORT(CLK:IN STD_LOGIC;CLR:IN STD_LOGIC;ENA: IN STD_LOGIC;CQ:OUT STD_LOGIC_VECTOR(3 DOWNTO 0);CO: OUT STD_LOGIC );END ENTITY CNT10;ARCHITECTURE ART OF CNT10 ISSIGNAL CQI:STD_LOGIC_VECTOR(3 DOWNTO 0);BEGINPROCESS(CLK,CLR,ENA) ISBEGINIF CLR='1' THEN CQI<="0000";ELSIF CLK'EVENT AND CLK='1' THENIF ENA='1' THENIF CQI="1001" THEN CQI<="0000";ELSE CQI<=CQI+'1';END IF;END IF;END IF;END PROCESS;PROCESS(CQI) ISBEGINIF CLK'EVENT AND CLK='1' THENIF CQI<"1001" THEN CO<='0';ELSE CO<='1';END IF;END IF;END PROCESS;CQ<=CQI;END ARCHITECTURE ART;CNT9999的VHDL源程序:LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;--使用IEEE.STD_LOGIC_1164程序包PORT(CLR: IN STD_LOGIC;CLK: IN STD_LOGIC;CLK2:IN STD_LOGIC;ENA: IN STD_LOGIC;COM: OUT STD_LOGIC_VECTOR(7 DOWNTO 0);SEG: OUT STD_LOGIC_VECTOR(7 DOWNTO 0));END ENTITY DCNT9999;ARCHITECTURE ART OF DCNT9999 ISCOMPONENT CNT10 IS --CNT10元件定义语句PORT(CLK, CLR, ENA: IN STD_LOGIC;CQ: OUT STD_LOGIC_VECTOR(3 DOWNTO 0);CO: OUT STD_LOGIC);END COMPONENT CNT10;COMPONENT CTRLS IS --元件定义语句PORT(CLK: IN STD_LOGIC;--端口说明语句(端口名:端口模式数据类型)SEL: OUT STD_LOGIC_VECTOR(2 DOWNTO 0));END COMPONENT CTRLS;COMPONENT DISPLAY IS --元件定义语句PORT(SEL: IN STD_LOGIC_VECTOR(2 DOWNTO 0);DATAIN: IN STD_LOGIC_VECTOR(15 DOWNTO 0);COM: OUT STD_LOGIC_VECTOR(7 DOWNTO 0);SEG: OUT STD_LOGIC_VECTOR(7 DOWNTO 0));END COMPONENT DISPLAY;SIGNAL S0,S1,S2: STD_LOGIC; --信号的定义,定义了3个标准位的单值信号SIGNAL SEL: STD_LOGIC_VECTOR(2 DOWNTO 0);--定义1个标准位矢量的位矢量信号SEL,含有3个元素SIGNAL DOUT:STD_LOGIC_VECTOR(15 DOWNTO 0);--定义1个标准位矢量的位矢量信号DOUT,有16个数组元素BEGINU0: CNT10 PORT MAP(CLK,CLR, ENA, DOUT(3 DOWNTO 0), S0); --元件例化语句,位置关联的方式U1: CNT10 PORT MAP(S0, CLR, ENA, DOUT(7 DOWNTO 4), S1);U2: CNT10 PORT MAP(S1, CLR, ENA, DOUT(11 DOWNTO 8), S2);U3: CNT10 PORT MAP(S2, CLR, ENA, DOUT(15 DOWNTO 12));U4: CTRLS PORT MAP(CLK2,SEL);U5: DISPLAY PORT MAP(SEL(2 DOWNTO 0),DOUT(15 DOWNTO 0),COM(7 DOWNTO 0),SEG(7 DOWNTO 0));--位置关联方式END ARCHITECTURE ART;3)仿真波形设置本设计包括两个层次,因此先进行底层的十进制计数器CNT10的仿真,再进行顶层CNT9999的仿真。
EDA实验报告学院:软件学院姓名:邵旭东学号:20107611441班级:物联网14 班指导老师:陈德新十进制计数器的EDA设计一、实验目的1.掌握十进制计数器的基本原理及设计方法。
2.掌握七段译码器电路的设计方法。
3. 掌握Maxpuls软件的应用。
二、实验原理实验原理图如下图1实验电路结构如图1所示。
主要由消抖电路、BCD码计数器和七段译码器构成,各部分电路介绍如下:本实验采用的BCD码计数电路由74160构成,74160 是十进制同步计数器(异步清除),在其功能表中,当LDN、ENT、ENP、CLRN四个输入端都接高电平时,对CLK输入脉冲上升沿进行计数,由QA-QD输出8421码。
具体电路如图3所示。
本实验采用的七段译码器电路由7447和外部共阴极数码管构成,7447七段译码器将BCD8421码译成数码管所需的七段数显码,真值表如表1所示。
具体电路如图3所示。
图3 开关防颤动电路开关防颤动电路图2 开关防颤动电路图3 BCD计数器和七段译码器三、实验内容与步骤1.打开PC机界面MAX+plusⅡ软件,输入图4的电路图。
2.选菜单File\Project\Set Project to Current File,然后选菜单MAX+plusⅡ\complier编辑当前图形文件。
图4 10进制脉冲计数器3.用Byte Blaster下载缆线联结PC机并口和实验箱J1(JTAG),打开实验箱电源开关。
选择菜单项MAX+plus II\Programmer,单击Program按钮,即开始下载程序。
4.关闭电源开关,取下下载缆线,参考电路原理图编号一CLK.SCH、编号五CPLD1.SCH,SW11、SW51的短路帽接入1、2脚,CLK-J11的短路帽选择0.2K位置,CLK-J13的第三个拨码开关置ON状态。
5.打开实验箱电源开关,连续按K52键,观察数码管LED1的变化。
6.完成上述实验后,分别把时钟信号单元中SW11、SW51的短路帽接入2、3脚,CLK-J13的第三个拨码开关置OFF状态,关闭电源开关。
竭诚为您提供优质文档/双击可除eda10进制计数器实验报告篇一:eda作业答案简述用QuartusⅡ开发数字系统的过程1逻辑设计。
首先要使用数字电路的基本设计方法设计数字系统,组合逻辑用组合逻辑的设计方法,时序逻辑用时序逻辑的设计方法。
设计完成后,使用硬件描述语言(Verilog或VhDL)输入QuartusII进行综合。
2.仿真验证阶段。
编译无误后,使用调试工具(QuartusII自带的向量波形文件或modelsim)对综合生成的结果进行仿真。
首先进行功能仿真(Functionalsimulation)以验证逻辑是否正确。
功能仿真无误后,进行时序仿真(Timingsimulation)验证电路功能是否正常。
3.下载调试阶段。
时序仿真结果无误后,将生成的电路下载进入对应的FpgA或cpLD芯片中,进行管脚分配,所有工作完成后进行调试,若调试有误,则查找原因返回步骤1或步骤2修改设计;若调试无误则数字系统设计完成FpgA与cpLD在硬件结构上的区别?FpgA与cpLD的区别系统的比较,与大家共享:尽管FpgA和cpLD都是可编程AsIc器件,有很多共同特点,但由于cpLD和FpgA结构上的差异,具有各自的特点:①cpLD更适合完成各种算法和组合逻辑,FpgA更适合于完成时序逻辑。
换句话说,FpgA更适合于触发器丰富的结构,而cpLD更适合于触发器有限而乘积项丰富的结构。
②cpLD的连续式布线结构决定了它的时序延迟是均匀的和可预测的,而FpgA的分段式布线结构决定了其延迟的不可预测性。
③在编程上FpgA比cpLD具有更大的灵活性。
cpLD通过修改具有固定内连电路的逻辑功能来编程,FpgA主要通过改变内部连线的布线来编程;FpgA可在逻辑门下编程,而cpLD是在逻辑块下编程。
④FpgA的集成度比cpLD高,具有更复杂的布线结构和逻辑实现。
⑤cpLD比FpgA使用起来更方便。
cpLD的编程采用e2pRom或FAsTFLAsh技术,无需外部存储器芯片,使用简单。
eda10进制计数器实验报告1B计算机组成原理教学实验箱一台,排线若干。
2) PC机一台。
3、实验步骤与源程序l) 根据该模型机的指令系统,编写一段程序。
这里给出两个参考程序。
参考程序一:本程序从输入设备(数码开关)取入数据,保存在内存单元08,然后从08单元送到输出设备(LED数码管)进行显示。
然后程序停止(请实验者考虑:如何修改程序,使程序不断从输入设备取出数据,送到输出设备显示。
每次循环过程中,可以使输入设备数据改变,考察输出显示的结果。
)。
设计机器指令程序如下(机器码为十六进制数据)。
地址内容助记符说明00 00 IN;输入开关数据→R00120 STA [08H] ;R0→[08]02 08 ;地址03 30 OUT [08H] ;[08H] →BUS04 08 ;地址05 40 JMP [00H] ;00H→PC06 00 ;跳转地址参考程序二:本程序从输入设备(数码开关)读入数据,与0A单元的数据相加,然后送到输出设备(LED数码管)进行显示。
本程序不断地循环运行,在运行中可改变输入开关(INPUT)的值,观察输出显示的变化。
设计机器指令程序如下(机器码为十六进制数据)。
地址内容助记符说明00 00 IN;输入开关数据→R0,采集数据0110 ADD [0AH] ;R0+[0AH]→R0,输入数据与指定数据相加02 0A ;地址0320 STA [0BH] ;R0→[0B]04 0B ;地址05 30 OUT [0BH] ;[0BH] →BUS,输出显示06 0B ;地址07 40 JMP [00H] ;00H→PC08 00 ;跳转地址0A 01 ;加数,可自定0B ;求和结果保存在0B单元2) 按图1连接实验线路。
3) 写程序:对于本实验箱可以用两种方法来写入程序。
方法一:手动写入(1)先将机器指令对应的微代码正确地写入2816中,由于在实验1.6微程序控制器的组成与微程序设计实验中已将微代码写入E2PR0M芯片中,对照表2—2校验正确后就可使用。
eda实验报告计数器EDA实验报告-计数器引言:计数器是数字电路中常用的基本模块之一,它在各个领域都有着广泛的应用。
本实验旨在通过EDA(电子设计自动化)软件进行计数器的设计与仿真,探索计数器的原理和功能。
一、计数器的基本原理计数器是一种能够按照规定的顺序改变其输出状态的电子电路。
它通过内部的触发器和逻辑门实现数字信号的计数功能。
常见的计数器有二进制计数器、十进制计数器等。
二、实验设计与仿真1. 实验目标本次实验的目标是设计一个4位二进制计数器,并通过EDA软件进行仿真验证。
计数器的功能是在每个时钟脉冲到来时,输出的二进制数加1。
2. 设计思路计数器的设计需要考虑以下几个方面:- 选择适当的触发器:本实验选择了D触发器作为计数器的基本单元,因为D触发器具有简单、易于控制的特点。
- 确定计数器的位数:本实验设计了一个4位计数器,即可以表示0~15的二进制数。
- 连接逻辑门:通过逻辑门将各个触发器连接起来,实现计数器的功能。
3. 电路设计根据设计思路,我们使用EDA软件进行电路设计。
首先,将4个D触发器连接起来,形成4位计数器。
然后,根据计数器的功能要求,将时钟信号连接到每个触发器的时钟输入端。
最后,将各个触发器的输出通过逻辑门进行连接,得到计数器的输出。
4. 仿真验证完成电路设计后,我们使用EDA软件进行仿真验证。
通过输入不同的时钟信号,观察计数器的输出是否符合预期。
在仿真过程中,我们可以调整时钟信号的频率,观察计数器的计数速度。
三、实验结果与分析通过EDA软件的仿真,我们得到了计数器的输出结果。
在时钟信号的作用下,计数器按照预期进行了计数,并输出了相应的二进制数。
通过观察输出结果,我们可以得出以下几点结论:- 计数器的输出与时钟信号的频率有关,频率越高,计数速度越快。
- 计数器的输出按照二进制的顺序进行计数,当达到最大值时,会从0重新开始计数。
四、实验总结本次实验通过EDA软件进行了计数器的设计与仿真。
基于EDA的三位十进制计数器三位十进制计数器一、设计目的采用文本输入法设计三位十进制加法计数器。
编写VHDL源代码,得出正确的仿真波形,并在实验开发系统上进行硬件演示。
二、设计内容设计一个三位10进制计数器,对计数器相关的理论进行分析、归纳和总结;三位10进制计数器的结构组成及原理分析。
程序代码(含注释);给出程序中主要函数或者语句的功能说明和使用说明;给出程序仿真运行结果和图表、以及实验结果分析和总结。
三、计数器设计原理计数器的输入信号是计数信号(CLK),门控信号是手动清零信号(RESET)、手动允许计数(ENA)。
清零信号Rest为1时,保持在清零状态,计数脉冲上升沿无效;允许计数端为0时,为保持状态,这时保持至最后一个计数,计数脉冲上升沿无效;清零信号为0,允许计数信号为1时,计数器上升沿脉冲计数。
计数器是在数字系统中使用最多的时序电路,它不仅能用于对时钟脉冲计数,还可以用于分频,定时,产生节拍脉冲和脉冲序列以及进行数字运算等。
计数器是一个典型的时序电路,分析计数器就能更好地了解时序电路的特性。
三位十进制计数显示器的设计分三步完成。
先设计十进制计数电路,再设计显示译码电路,最后建立一个顶层文件将两者连接起来。
四、设计程序代码1)三位十进制计数程序:LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY COU10 ISPORT(CLK,RESET,CIN :IN STD_LOGIC;CO :OUT STD_LOGIC;BCDAP :OUT STD_LOGIC_VECTOR(3 DOWNTO 0); BCDBP :OUT STD_LOGIC_VECTOR(3 DOWNTO 0); BCDCP :OUT STD_LOGIC_VECTOR(3 DOWNTO 0) );END COU3;ARCHITECTURE BEHAVE OF COU3 ISSIGNAL BCDAN:STD_LOGIC_VECTOR(3 DOWNTO 0); SIGNAL BCDBN:STD_LOGIC_VECTOR(3 DOWNTO 0); SIGNAL BCDCN:STD_LOGIC_VECTOR(3 DOWNTO 0); BEGINBCDAP<=BCDAN;BCDBP<=BCDBN;BCDCP<=BCDCN;KK1:PROCESS(CLK)BEGINIF(CLK'EVENT AND CLK='1')THENIF(RESET='0')THENBCDAN<="0000";ELSIF(CIN='1')THENIF(BCDAN="1001")THENBCDAN<="0000";ELSEBCDAN<=BCDAN+'1';END IF;END IF;END IF;END PROCESS KK1;KK2:PROCESS(CLK)BEGINIF(CLK'EVENT AND CLK='1')THENIF(RESET='0')THENBCDBN<="0000";ELSIF(CIN='1') AND (BCDAN="1001")THENIF(BCDBN="1001")THENBCDBN<="0000";ELSEBCDBN<=BCDBN+'1';END IF;END IF;END IF;END PROCESS KK2;KK3:PROCESS(CLK)BEGINIF(CLK'EVENT AND CLK='1')THENIF(RESET='0')THENBCDCN<="0000";ELSIF(CIN='1') AND (BCDBN="1001") AND (BCDAN="1001")THENIF(BCDCN="1001")THENBCDCN<="0000";ELSEBCDCN<=BCDCN+'1';END IF;END IF;END IF;END PROCESS KK3;END BEHAVE;2)显示译码器程序:LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY YIMAQI ISPORT(II:IN STD_LOGIC_VECTOR(3 DOWNTO 0); Y :OUT STD_LOGIC_VECTOR(6 DOWNTO 0)); END SEG7;ARCHITECTURE BEHAVE OF SEG7 ISSIGNAL INDATA:STD_LOGIC_VECTOR(3 DOWNTO 0); BEGIN INDATA<=II;PROCESS(INDATA)BEGINCASE INDATA ISWHEN"0000"=> Y<="0000001";WHEN"0001"=> Y<="1001111";WHEN"0010"=> Y<="0010010";WHEN"0011"=> Y<="0000110";WHEN"0100"=> Y<="1001100";WHEN"0101"=> Y<="0100100";WHEN"0110"=> Y<="0100000";WHEN"0111"=> Y<="0001111";WHEN"1000"=> Y<="0000000";WHEN"1001"=> Y<="0000100";WHEN"1010"=> Y<="0001000";WHEN"1011"=> Y<="1100000";WHEN"1100"=> Y<="0110001";WHEN"1101"=> Y<="1000010";WHEN"1110"=> Y<="0110000";WHEN"1111"=> Y<="0111000";WHEN OTHERS=>Y<="XXXXXXX";END CASE;END PROCESS;END BEHAVE;3)顶层文件:LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY DINGCEN ISPORT(CLK,RESET,ENA:IN STD_LOGIC;SEG1: OUT STD_LOGIC_VECTOR(6 DOWNTO 0); SEG2: OUT STD_LOGIC_VECTOR(6 DOWNTO 0); SEG3: OUT STD_LOGIC_VECTOR(6 DOWNTO 0)); END COU37SEG;ARCHITECTURE X37 OF COU37SEG IS COMPONENT SEG7PORT(II:IN STD_LOGIC_VECTOR(3 DOWNTO 0);Y :OUT STD_LOGIC_VECTOR(6 DOWNTO 0)); END COMPONENT;COMPONENT COU3PORT(CLK,RESET,CIN:IN STD_LOGIC;BCDAP: OUT STD_LOGIC_VECTOR(3 DOWNTO 0); BCDBP: OUT STD_LOGIC_VECTOR(3 DOWNTO 0); BCDCP: OUT STD_LOGIC_VECTOR(3 DOWNTO 0)); END COMPONENT;SIGNAL A,B,C:STD_LOGIC_VECTOR(3 DOWNTO 0); BEGINU0:COU3 PORT MAP(CLK,RESET,ENA,A,B,C);U1:SEG7 PORT MAP(A,SEG1);U2:SEG7 PORT MAP(B,SEG2);U3:SEG7 PORT MAP(C,SEG3);END X37;五、程序设计步骤1)打开ispEXPERT软件,建立一个新的工程cnt10;1 单击菜单File→New Project2 输入工程路径,工程名2)建立VHDL文件单击File→New菜单项,选择VHDL File选项,单击OK按钮以建立VHDL文件,分别建立十进制计数程序的vhd文件COU10.vhd,显示译码器vhd文件YIMAQI.vhd和顶层文件DINGNGCEN.vhd 3)然后设定管脚4)最后保存编译运行,生成可下载到板子里面的jed文件5)器件下载6)波形仿真结果六、设计结果与分析三位十进制加法计数器实现了从000到999的计数,当计数到999时,计数器的输出置0,下一次又从0到999计数。
课程设计说明书题目:十进制加法计数器学院(系):电气工程学院年级专业:学号:学生姓名:**课程设计(论文)任务书院(系):电气工程学院基层教学单位:电子实验中心说明:此表一式四份,学生、指导教师、基层教学单位、系部各一份。
年月日目录第1章摘要 (4)第2章十进制加法器设计说明 (5)2.1 设计思路 (5)2.2 流程图 (5)2.3 模块介绍 (6)2.4 真值表 (6)第3章原理图分析 (11)3.1 整体原理图 (11)3.2 输入转换部分设计 (12)3.3 蜂鸣器部分 (12)3.4 加法器部分 (13)3.5 B-BCD(二进制转换为BCD码) (13)3.6 动态数码管部分 (14)第4章波形仿真图及结果分析 (16)第5章管脚锁定及硬件连线 (21)第6章总结 (22)参考文献 (23)**评审意见表 (24)摘要十进制加法器可由BCD码(二-十进制码)来设计,它可以在二进制加法器的基础上加上适当的“校正”逻辑来实现,该校正逻辑可将二进制的“和”改变成所要求的十进制格式。
n位BCD码行波式进位加法器由n级组成,每一级将一对4位的BCD数字相加,并通过一位进位线与其相邻级连接。
在十进制运算时,当相加二数之和大于9时,便产生进位。
用BCD码完成十进制数运算时,当和数大于9时,必须对和数进行加6修正,由加法器和比较器完成功能的实现。
加法器的加数和被加数若大9则蜂鸣器警报5秒,数码管显示为0,由比较器和计数器控制。
动态数码管由计数器、数据选择器、译码器完成显示功能。
关键词:十进制加法器、动态数码管显示、蜂鸣器警报第二章十进制加法器设计说明2.1 设计思路根据项目要求设计的十进制加法器有两个输入,及加数和被加数,分别是用四个拨码开关表示的四位二进制数,即输入的范围为0到15;有一个输出,即两个加数相加的结果。
加数、被加数和结果都需要显示在动态数码管上,并且,加数或被加数若大于9,则蜂鸣器报警5秒钟,且显示为0.根据要求,设计加数和被加数的合法范围为0到9,故当输入的加数大于9的时候需要将其统一变换成0。
物理与电气工程学院课程设计报
告
可控制计数器设计
姓名:李自新
学号: 131103032
一、实验任务
熟悉QuartusⅡ的Verilog HDL文本设计流程全过程,学习计数器的设计、仿真和硬件测试。
EDA的设计流程为原理图/HDL文本编辑、逻辑综合、FPGA/CPLD适配、FPGA/CPLD编程下载。
EDA的设计所用的软件是Quartus II 软件,Quartus II 软件可以用图形输入、VHDL文本输入的方法输入,之后进行时序仿真,EDA设计流程的最后一步是将程序下载到开发板上,进行硬件测试。
二、实验原理
根据频率的定义和频率测量的基本原理,测定信号的频率必须有一个脉宽为1秒的对输入信号脉冲计数允许的信号;1秒计数结束后,计数值锁入锁存器的锁存信号和为下一测频计数周期作准备的计数器清0信号。
这3个信号可以由一个测频控制信号发生器产生,即图6-24中的TESTCTL,它的设计要求是,TESTCTL的计数使能信号CNT_EN能产生一个1秒脉宽的周期信号,并对频率计的每一计数器CNT10的ENA使能端进行同步控制。
当CNT_EN高电平时,允许计数;低电平时停止计数,并保持其所计的脉冲数。
在停止计数期间,首先需要一个锁存信号LOAD的上跳沿将计数器在前1秒钟的计数值锁存进各锁存器REG4B中,并由外部的7段译码器译出,显示计数值。
设置锁存器的好处是,显示的数据稳定,不会由于周期性的清零信号而不断闪烁。
锁存信号之后,必须有一清零信号RST_CNT对计数器进行清零,为下1秒钟的计数操作作准备。
按规定编写程序如下:
module CNT10 (CLK,RST,EN,LOAD,COUT,DOUT,DATA);
input CLK,EN,RST,LOAD;
input [3:0] DATA;
output [3:0] DOUT;
output COUT;
reg [3:0] Q1 ; reg COUT ;
assign DOUT = Q1;
always @(posedge CLK or negedge RST) begin
if (!RST) Q1 <= 0;
else if (EN) begin
if (!LOAD) Q1 <= DATA;
else if (Q1<9) Q1 <= Q1+1;
else Q1 <= 4'b0000; end
end
always @(Q1)
if (Q1==4'h9) COUT = 1'b1;
else COUT = 1'b0;
endmodule
编写Verilog程序描述一个电路,实现以下功能:设计带有异步复位、同步计数使能和可预置型的十进制计数器。
具有5个输入端口(CLK、RST、EN、LOAD、DATA)。
CLK输入时钟信号;RST 起异步复位作用,RST=0,复位;EN是时钟使能,EN=1,允许加载或计数;LOAD 是数据加载控制,LOAD=0,向内部寄存器加载数据;DATA是4位并行加载的数据。
有两个输出端口(DOUT和COUT)。
DOUT的位宽为4,输出计数值,从0到9;COUT是输出进位标志,位宽为1,每当DOUT为9时输出一个高电平脉冲。
四、实验方法
1、在非C盘中建立一个CNT10的文件夹,启动Quartus II软件,新建一个Verilog HDL File,如图所示:
2、编写如图的Verilog程序,存盘,文件名为CNT10.V。
存盘后会出现如图所示的对话框,问是否建立一个新的工程,点击“是”。
然后添加工程文件
选择如图所示的元件
最后完成工程的建立,进行编译。
3、通过编译后,建立波形文件
把上图中的输入、输出端口放入仿真列表中,并对各输入端进行仿真设
置,CLK设置时钟,EN、RST、LOAD设置高低电平,DATA设置数值,如
图所示
最后保存,文件名为CNT10.vwf
4、进行仿真,分析结果。
五、心得体会
通过本次,基本掌握熟悉QuartusⅡ的Verilog HDL文本设计流程全过程,学习计数器的设计、仿真和硬件测试,为下一步学习打好了基础!。