EDA论文用程序输入法设计16位二进制加法计算器

合集下载

模可变16位加法计数器

模可变16位加法计数器

《EDA设计》报告题目:模可变16位加法计数器设计专业班级:学生姓名:指导教师:武汉理工大学信息工程学院2014 年 1 月 6 日课程设计任务书学生姓名:专业班级:指导教师:工作单位:信息工程学院题目: 模可变16位加法计数器设计初始条件:可用仪器: PC机(Quartus II软件)硬件:EDA-IV型实验箱。

要求完成的主要任务:(1)设计任务设计一个模可变16位加法计数器。

(2)设计指导设计可变16位加法计数器,可通过3个选择位M2、M1、M0实现最多8种不同模式的计数方式,例如可构成5、10、16、46、100、128、200、256进制,共8种计数模式。

(3)时间安排:2013.12.23 课程设计任务布置、选题、查阅资料2013.12.24 设计,软件编程、仿真和调试2013.12.29 实验室检查仿真结果,验证设计的可行性和正确性2013.12.30 设计的硬件调试2014.01.05 机房检查设计成果,提交设计说明书及答辩指导教师签名:年月日系主任(或责任教师)签名:年月日目录摘要 (I)Abstract........................................................... I I1 绪论 (1)2 Quartus II简介 (2)3 计数器的工作原理 (3)4 设计原理 (4)4.1 整体设计原理 (4)4.2 单元模块的设计 (5)4.3 顶层模块(整体电子线路系统)的设计 (8)5 电路系统的功能仿真 (10)6 硬件调试 (12)7 个人小结 (14)参考文献 (15)摘要计数器是数字电子技术中应用的最多的时序逻辑电路。

计数器不仅能用于对时钟脉冲计数,还可以用于分频、定时、产生节拍脉冲和脉冲序列以及进行数字运算等。

但是并无法显示计算结果,一般都是要通过外接LCD 或LED屏才能显示。

计数器的种类按照计数器中的触发器是否同时翻转分类,可将计数器分为同步计数器和异步计数器两种,如果按照计数过程中数字增减分类,又可将计数器分为加法计数器、减法计数器和可逆计数器,随时钟信号不断增加的为加法计数器,不断减少的为减法计数器,可增可减的叫做可逆计数器,另外还有很多种分类不一一列举,但是最常用的是第一种分类,因为这种分类可以使人一目了然,知道这个计数器到底是什么触发方式,以便于设计者进行电路的设计。

EDA大作业 课程设计 简易计算器

EDA大作业 课程设计 简易计算器

在掌握常用数字电路功能和原理的基础上,根据EDA技术课程所学知识,利用硬件描述语言Verilog HDL、EDA软件Quartus II和硬件平台Cyclone/Cyclone II FPGA进行电路系统的设计。

本次实验我完成的内容是简单计算器的设计,下面我简单的进行一下原理的阐述。

设计一个简单计算器,输入为8位二进制数,分别用两位数码管显示,输出的计算结果为16位二进制数,并用四位数码管显示,能够实现+、-、 *、/ 四种运算,其中除法的结果显示分为商和余数两部分,分别用两位数码管显示。

为了完成要求的效果显示,我先设计了一个简单的四则运算器,为了使其结果能清楚的看到,所以计算器模块和一个7段数码管模块连接。

实验要求,输入分别用两位数码管显示,输出用四位数码管显示,所以用一个3—8译码器和数码管连接,通过开关控制,形成动态显示。

从左向右,依次是第一位数码管显示a的高四位,第二位数码管显示a的低四位;第三位数码管显示b的高四位,第四位数码管显示b的低四位;第五位数码管到第八位数码管显示输出的结果。

通过改变时钟,使其看起来像同时显示在数码管上。

设计流程如下图,分别用两个数码管表示八位二进制数,用一个case 语句表示输入数值采用哪种运算方式,分别用00,01,10,11表示加,减,乘,除。

用3—8译码器选择从哪个数码管输出。

硬件流程图输出结果 A. B 的显示软件流程图LED 灯接线部分显示:中心控制 复位编码 数码管输出输入A 输入B 运算选择C 输出out L E D 8 L E D 7 L E D 6 L E D 5 L E D 4 L E D 3 L E D 2 L E D 1第三章程序简单计算器的程序如下:module jsq9(a,b,c,Dout,count,clk,rst);input[7:0]a,b;input clk,rst;input[1:0]c;output[6:0]Dout;output [2:0]count;reg[6:0]Dout;reg[2:0]count;reg[15:0]out;reg[6:0] LED7S1,LED7S2,LED7S3,LED7S4, LED7S5,LED7S6,LED7S7,LED7S8; DECL7S u1(.A(a[7:4]) , .LED7S(LED7S1));DECL7S u2(.A(a[3:0]) , .LED7S(LED7S2));DECL7S u3(.A(b[7:4]) , .LED7S(LED7S3));DECL7S u4(.A(b[3:0]) , .LED7S(LED7S4));DECL7S u5(.A(out[15:12]) , .LED7S(LED7S5));DECL7S u6(.A(out[11:8]) , .LED7S(LED7S6));DECL7S u7(.A(out[7:4]) , .LED7S(LED7S7));DECL7S u8(.A(out[3:0]) , .LED7S(LED7S8));reg[7:0]out1,out2;always@(a,b,c,Dout,count,clk,rst)case(c)2'b00:out=a+b;2'b01:out=a-b;2'b10:out=a*b;2'b11:beginout1=a/b;out2=a%b;out={out1,out2};enddefault:;endcasealways@(posedge clk or negedge rst)beginif(!rst)count<=3'b000;else if(count==3'b111)count<=3'b000;elsecount<=count+3'b001;endalways@(posedge clk)begincase(count)3'b000: Dout<=LED7S1;3'b001:Dout<=LED7S2;3'b010:Dout<=LED7S3;3'b011:Dout<=LED7S4;3'b100: Dout<=LED7S5;3'b101:Dout<=LED7S6;3'b110:Dout<=LED7S7;3'b111:Dout<=LED7S8;endcaseendendmodulemodule DECL7S (A, LED7S);input [3:0] A;output [6:0] LED7S;reg [6:0] LED7S;always @(A)begincase(A)4'b0000 : LED7S<=7'b0111111; 4'b0001: LED7S <= 7'b0000110 ; 4'b0010: LED7S <= 7'b1011011; 4'b0011: LED7S <= 7'b1001111; 4'b0100: LED7S <= 7'b1100110 ; 4'b0101: LED7S <= 7'b1101101; 4'b0110: LED7S <= 7'b1111101 ; 4'b0111: LED7S <= 7'b0000111 ; 4'b1000: LED7S <= 7'b1111111 ; 4'b1001: LED7S <= 7'b1101111 ; 4'b1010: LED7S <= 7'b1110111 ; 4'b1011: LED7S <= 7'b1111100 ; 4'b1100: LED7S <= 7'b0111001 ;4'b1101: LED7S <= 7'b1011110 ; 4'b1110: LED7S <= 7'b1111001 ; 4'b1111: LED7S <= 7'b1110001 ; endcaseendendmodule第四章模块连接在本程序中,共由三个模块组成,第一个模块是一个四选一多路器其仿真图为:第二个模块是7段数码管显示程序如下module DECL7S (A, LED7S);input [3:0] A;output [6:0] LED7S;reg [6:0] LED7S;always @(A)begincase(A)4'b0000 : LED7S<=7'b0111111;4'b0001: LED7S <= 7'b0000110 ;4'b0010: LED7S <= 7'b1011011;4'b0011: LED7S <= 7'b1001111;4'b0100: LED7S <= 7'b1100110 ;4'b0101: LED7S <= 7'b1101101;4'b0110: LED7S <= 7'b1111101 ;4'b0111: LED7S <= 7'b0000111 ;4'b1000: LED7S <= 7'b1111111 ;4'b1001: LED7S <= 7'b1101111 ;4'b1010: LED7S <= 7'b1110111 ;4'b1011: LED7S <= 7'b1111100 ;4'b1100: LED7S <= 7'b0111001 ;4'b1101: LED7S <= 7'b1011110 ;4'b1110: LED7S <= 7'b1111001 ;4'b1111: LED7S <= 7'b1110001 ;endcaseendendmodule仿真图如下:把这个两个模块用一个3—8译码器进行连接,使其达到实验的要求。

EDA创新性实验项目——16位CPU设计

EDA创新性实验项目——16位CPU设计

EDA创新性实验项目——16位CPU设计一、项目背景随着计算机科学和技术的不断发展,人们对计算机处理速度和性能的需求也在不断增加。

在这种背景下,为了满足人们对计算速度和性能的需求,研究者们开始将目光投向了新型的CPU设计。

传统的CPU设计多为32位或64位,但这种设计可能会带来一些不必要的复杂性和成本。

因此,设计一种16位CPU成为了当前研究的热点之一二、项目目标本实验项目旨在设计一款16位CPU,以满足轻量级计算需求,并保证其性能和效率。

通过设计一款16位CPU,可以降低处理器的成本和复杂度,提高计算性能,并且更好地满足轻量级计算需求。

三、项目内容1.CPU指令设计:设计新的16位CPU指令集,包括运算指令、数据传输指令、分支跳转指令等,以实现更加高效的计算功能。

2.CPU架构设计:设计16位CPU的整体架构,包括寄存器文件、数据通路、控制单元等,确保CPU的稳定性和高效性。

3.性能优化:对设计的CPU进行性能优化,提高其计算速度和响应速度,确保其在轻量级计算中的高效性。

4.性能评估:通过仿真和实验对设计的16位CPU进行性能评估,检验其计算速度和稳定性,以保证其满足设计需求。

四、项目实施步骤1.设计CPU指令集:根据实际需求设计新的16位CPU指令集,包括指令的格式、操作码和功能,保证其具有高效的计算能力。

2.设计CPU架构:设计16位CPU的整体架构,包括寄存器文件、数据通路和控制单元,确保其能够稳定运行和高效计算。

3.性能优化:对设计的CPU进行性能优化,优化数据通路和控制单元的设计,提高CPU的计算速度和响应速度。

4.实验仿真:通过基于EDA工具进行CPU的设计仿真,检验设计的CPU在不同场景下的计算性能和稳定性。

5.性能评估:对设计的CPU进行性能评估,比较其与传统32位CPU 的性能差异,确保16位CPU在轻量级计算中的优越性。

五、项目成果通过本实验项目的实施,设计一款16位CPU并进行性能评估1.设计一款高效、稳定的16位CPU,满足轻量级计算需求。

16位加法器电路设计

16位加法器电路设计

16位加法器电路设计
加法器电路是计算机中常见的数字电路,用于将两个二进制数相加并得出和。

16位加法器电路设计是指设计一个能处理16位二进制数相加的电路。

在设计16位加法器电路时,需要考虑以下几个关键方面:
1. 选择合适的器件:需要选择适合的逻辑门和触发器等数字电路器件。

常用的器件包括AND门、OR门、XOR门、全加器等。

2. 划分模块:将16位加法器电路划分为若干个小模块,简化设计过程。

常见的模块包括单位加法器和级联器。

3. 单位加法器设计:单位加法器是实现加法运算的基本单元。

在16位加法器电路中,每一位均由一个单位加法器完成。

单位加法器由两个输入(被加数位和加数位)和两个输出(和位和进位位)组成。

4. 级联器设计:级联器用于连接多个单位加法器,将进位位从低位传递到高位。

在16位加法器电路中,需要将每一位的进位位和前一位的进位位相连。

5. 测试和验证:设计完成后,需要进行测试和验证,确保16位加法器电路的正确性和性能。

通过以上步骤设计完成的16位加法器电路能够实现对16位二进制数的相加操作。

在实际应用中,可以将多个16位加法器电路级联以实现更大位数的加法运算。

设计一个高效可靠的16位加法器电路是数字电路设计的重要任务之一,对于计算机的性能和功能具有重要影响。

通过仔细考虑各个方面的设计和实施,可以实现一个满足要求的16位加法器电路。

用单片机语言设计16位加法计算器实验报告

用单片机语言设计16位加法计算器实验报告

湖北第二师范学院计算机学院09计应单片机课程设计实验报告课程设计名称:电子计算器课程设计单位:10计应(1)班课设小组成员:徐凡(1060310039)凡平(1060310058)彭浩(1060310045)桂银(1060310010)潘光卉(1060300033)完成时间:2012年04月02日至2012年04月 24 日单片机课程设计实验报告课程设计题目:简易计算器作品功能描述:当通过输入键盘数字时,能够在显示器上显示输出的数值,并且通过想实现的简单运算功能,实现计算器的加、减、乘、除和清零,并将结果显示出来。

小组成员工作分工:徐凡:程序主框架的构造和主要功能函数的设计。

凡平:原理图的设计和硬件的焊接。

彭浩:基本功能函数的设计(“+,-,*,/”)。

桂银:程序流程图的设计和键盘扫描程序的实现。

潘光卉:编写文档和功能测试。

硬件电路设计:本设计中我们用的是AT89C52芯片,LCD1602 (PROTEUS中为LM016L)就是那个液晶屏,因为可以显示2行16个字符,故叫做LCD1602.11.0592M或12M晶振(CRYSTAL),两者均可,但要涉及到串口需选用12MKEYPAD-SMALLCALC就是那个4X4键盘电容20~30PF(CAP),接最小电路电容10PF主要接复位电路RESPACK-8排阻,为20K的,一个引脚接正极,另8个引脚接I/O口接RES电阻10K,接复位电路实物照片:硬件原理图原理说明:1,上电后,屏幕初始化;2,计算。

按下数字键,屏幕显示要运行的第一个数字,再按下符号键,然后再按下数字键,屏幕显示要运算的第二个数字,最后按下“=”号键,屏幕上显示出计算结果。

3,如果要再次计算,可以按下“ON/C”键清零,或者继续按下数字键,即可重新计算。

键盘使用说明如下:按键功能说明:Array“+”实现两个数的相加“-”实现两个数的相减“×”实现两个数的乘积“÷”实现两个数商的运算“ON/C”计算器显示的清零和接通电源程序控制流程图:软件设计:在程序设计方法上,模块化程序设计是单片机应用中最常用的程序设计方法。

EDA报告

EDA报告

班级 021031学号 02103066EDA题目 EDA实验报告学院电子工程学院专业信息对抗技术学生姓名陈龑豪02103066导师姓名朱燕练习题第一题----画出下例实体描述对应的原理图符号元件ENTITY buf3s IS -- 实体1:三态缓冲器PORT (input : IN STD_LOGIC ; -- 输入端enable : IN STD_LOGIC ; -- 使能端output : OUT STD_LOGIC ) ; -- 输出端END buf3x ;ENTITY mux21 IS --实体2: 2选1多路选择器PORT (in0, in1, sel : IN STD_LOGIC;output : OUT STD_LOGIC);END ENTITY mux21;1.三态缓冲器a) library ieee;use ieee.std_logic_1164.all;entity ex1 isport (input: in std_logic; --输入端enable: in std_logic ; --使能端output : out std_logic ) ; --输出端end ex1;architecture behav of ex1 isbeginprocess(enable,input)beginif(enable='1') thenoutput<=input ;elseoutput<='Z'; --输出为高阻态Zend if;end process;end behav;b) 在RTL viewer中的仿真电路图如下所示:c) 三态缓冲器的仿真波形图如下:2. 2选1多路选择器a) library ieee;use ieee.std_logic_1164.all;entity ex2 isport ( in0,in1,sel : in std_logic;output : out std_logic);end entity ex2;architecture behav of ex2 isbeginwith sel selectoutput<=in0 when '0',in1 when '1';end behav;b)在RTL viewer中的仿真电路图如下所示:c)2选一多路选择器的仿真波形如下:第二题 ---四选一多路选择器图中所示的是4选1多路选择器,试分别用IF_THEN语句和CASE语句的表达方式写出此电路的VHDL程序。

Removed_EDA实验16位二进制加减可控计数器

Removed_EDA实验16位二进制加减可控计数器

1、掌握16位二进制加减可控计数器的设计思想,完成设计;2、熟悉QuartusⅡ对程序进行编译、调试和仿真的过程;3、掌握VHDL语言的表达;4、该计数器含有异步清零和计数使能功能。

二、实验内容和原理1、实验内容:根据实验要求,在QuartusⅡ中从所要实现的功能出发编写实验代码,并进行编译、调试和仿真。

2、实验原理:用IF语句将加、减法计数器连接起来;以MODE作为控制信号,选择进行加法或减法运算;以RST作为异步清零信号,当RST为‘1’时将对计数器清零,即复位,这项操作是独立于CLK的,称异步;以EN作为始能信号,只有EN=1且RST无效(即RST=0),若此时有CLK信号,计数器才工作。

三、实验环境QuartusⅡ软件四、操作方法与实验步骤1、分析二进制加法、减法计数器工作原理,由此设计控制信号,使计数器可控;2、在QuartusⅡ中建立计数器工程,进行程序编写、调试、编译、仿真;3、对实验所得的时序图形进行分析。

五、实验数据记录和处理将程序进行仿真得到的波形图如下所示六、实验结果与分析:从仿真的时序图上可以看出,MODE的电平决定加操作还是减操作;RST为高电平有效,立即的将CQ置零;只有在EN为高电平且RST为低电平的情况下,CQ随着时钟上升沿的到来计数。

七、实验心得与体会通过该实验,我初步掌握了VHDL语言的基本使用方法,熟悉了QuartⅡ软件的操作流程。

八、程序代码LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY add16 ISPORT(CLK,RST,EN:IN STD_LOGIC;CQ:OUT STD_LOGIC_VECTOR(15 DOWNTO 0);COUT:OUT STD_LOGIC;MODE:IN STD_LOGIC);END add16;ARCHITECTURE behav OF add16 ISBEGINPROCESS(CLK,RST,EN)VARIABLE CQ_IN:STD_LOGIC_VECTOR(15 DOWNTO 0);BEGINIF RST='1' THENCQ_IN:=(OTHERS=>'0');ELSIF CLK'EVENT AND CLK='1' THENIF EN='1' THENIF MODE='1' THENIF CQ_IN<65535 THENCQ_IN:=CQ_IN+1;COUT<='0';ELSE CQ_IN:=(OTHERS=>'0'); COUT<='1';END IF;ELSIF MODE='0' THENIF CQ_IN>0 THENCQ_IN:=CQ_IN-1;COUT<='0';ELSECQ_IN:=(OTHERS=>'1');COUT<='1';END IF;END IF;END IF;END IF;CQ<=CQ_IN;END PROCESS; END behav;。

基于EDA的简易计算器的设计

基于EDA的简易计算器的设计

EDA 课程设计报告书课题名称 基于EDA 的简易计算器的设计 姓 名学 号 院 系 专 业 指导教师年 月 日※※※※※※※※※ ※※ ※※ ※※※※※※※※※※※****级学生EDA 课程设计基于EDA的简易计算器的设计1 设计目的(1)学习面向可编程器件的FPGA的简单数字系统的设计流程;(2)掌握EDA软件Quartus II的原理图输入方式,以及硬件描述语言描述方式;(3)熟悉EDA编辑软件。

2设计的主要内容和要求1、设计一个1位全加器。

运用波形仿真检查功能正确后,将其封装成1位全加器模块。

2、以1中已封装的1位全加器模块为基础设计一个4位全加器并将其封装成模块。

3、以全加器为基础设计一个4位乘法器并封装成乘法器模块,输出显示乘积和正负数标志。

4、以2、3中生成的器件模块为基础构成一个简易计算器,实现如图2.1所示。

根据S的输入,分别完成Y=A+B或Y=A×B。

要求:(1) 加数为正时,实现两个4位二进制数与来自低位进位的加法运算,输出显示和及高位进位。

(2) 加数为负时,实现两个4位二进制数的减法运算,输出显示差的原码和正负数标志。

图2.1 简易计算器框图3 整体设计方案根据设计要求和系统所具有功能,并参考相关的文献资料经行方案,先设计一个全加器,再四位全加器,四位乘法器,然后构成简易计算器。

4 硬件电路的设计4.1 设计一位全加器一位全加器电路如图4.1所示。

其中A1、B1分别为两个加数,C1为来自低位的进位,S为输出的全加和,C01为向高位的进位。

图4.1 一位全加器检查正确无误后,进行全编译,然后将其封装成一位全加器模块,如图4..2所示。

图4.2 一位全加器模块4.2 设计四位全加器要实现一个四位全加器,能进行加减法且以原码方式输出结果,分三步进行,流程如图4.3所示。

图4.3 四位全加器流程图(1)设计四位加法器用四个一位全加器的串行接法,即可得到四位串行加法器,实现四位二进制数的加法,用原理图的方式在Quartus II中构建原理图如图4.4。

EDA课程设计十六位乘加器华侨大学

EDA课程设计十六位乘加器华侨大学

EDA实验报告十六位硬件乘加器电路学号 1215102057姓名张凌枫班级 12电子信息工程A华侨大学电子工程系1、题目名称:十六位硬件乘加器电路2、摘要:采用流水线方式来实现对8个16位数据进行乘法和加法运算(yout=a0⨯b0+a1⨯b1+a2⨯b2+a3⨯b3),使用乘法器lpm_mult2、16位加法器ADDER16B、计数器cnt16以及锁存器en_dff四个模块。

当clock 出现上升沿时,对输入端输入的两个数dataa、datab进行乘法运算。

将结果输入锁存器中,锁存上一阶段计算得到的值, 16位加法器ADDER16B将锁存器锁存的上一阶段的值与进行完乘法计算得到的值dataa*datab加起来,并输出结果。

计数器cnt16用于区分四组乘加所得数,当有一个上升沿脉冲送入cnt16时,若计数不到5,则进行计数+1,若计数达到5,COUT输出进位信号到锁存器en_dff的reset 端口,将锁存器复位清零,重新进行计数。

此设计经过仿真与硬件测试检验后证实可行。

3、目录4.1系统设计 (4)4.1.1设计要求4.1.2系统设计方案(1)系统设计思路(2)总体方案的论证与比较(3)各功能块的划分与组成(4)系统的工作原理4.2单元电路设计 (6)4.2.1各单元电路的工作原理4.2.2各单元电路电路分析与设计4.3软件设计 (12)4.3.1软件设计平台、开发工具和实现方法4.3.2程序的流程方框图4.3.3实现的功能、程序清单4.4系统测试 (16)4.4.1系统的性能指标4.4.2功能的测试方法、步骤4.4.3仪器设备名称、型号4.4.4测试数据、图表4.5结论 (19)4.5.1对测试结果和数据的分析和计算4.5.2对于此设计的评价4、正文4.1系统设计4.1.1设计要求设计要求:位宽16位;能对8个16位数据进行乘法和加法运算(yout=a0⨯b0+a1⨯b1+a2⨯b2+a3⨯b3),并行、串行或流水线方式。

【2017年整理】EDA实验16位二进制加减可控计数器

【2017年整理】EDA实验16位二进制加减可控计数器

**大学本科实验报告(2011-2012学年下学期)课程名称:EDA任课教员:系:专业:二0一一年十月八日《EDA》课程实验报告实验项目名称:16位二进制加减可控计数器系::指导教员:姓名:学号:成绩:同组学员姓名:实验地点:EDA实验室实验日期:16位二进制加减可控计数器设计一、实验目的和要求1、掌握16位二进制加减可控计数器的设计思想,完成设计;2、熟悉QuartusⅡ对程序进行编译、调试和仿真的过程;3、掌握VHDL语言的表达;4、该计数器含有异步清零和计数使能功能。

二、实验内容和原理1、实验内容:根据实验要求,在QuartusⅡ中从所要实现的功能出发编写实验代码,并进行编译、调试和仿真。

2、实验原理:用IF语句将加、减法计数器连接起来;以MODE作为控制信号,选择进行加法或减法运算;以RST作为异步清零信号,当RST为‘1’时将对计数器清零,即复位,这项操作是独立于CLK的,称异步;以EN作为始能信号,只有EN=1且RST无效(即RST=0),若此时有CLK 信号,计数器才工作。

三、实验环境QuartusⅡ软件四、操作方法与实验步骤1、分析二进制加法、减法计数器工作原理,由此设计控制信号,使计数器可控;2、在QuartusⅡ中建立计数器工程,进行程序编写、调试、编译、仿真;3、对实验所得的时序图形进行分析。

五、实验数据记录和处理将程序进行仿真得到的波形图如下所示六、实验结果与分析:从仿真的时序图上可以看出, MODE的电平决定加操作还是减操作;RST为高电平有效,立即的将CQ置零;只有在EN为高电平且RST为低电平的情况下,CQ随着时钟上升沿的到来计数。

七、实验心得与体会通过该实验,我初步掌握了VHDL语言的基本使用方法,熟悉了QuartⅡ软件的操作流程。

八、程序代码LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY add16 ISPORT(CLK,RST,EN:IN STD_LOGIC;CQ:OUT STD_LOGIC_VECTOR(15 DOWNTO 0);COUT:OUT STD_LOGIC;MODE:IN STD_LOGIC);END add16;ARCHITECTURE behav OF add16 ISBEGINPROCESS(CLK,RST,EN)VARIABLE CQ_IN:STD_LOGIC_VECTOR(15 DOWNTO 0);BEGINIF RST='1' THENCQ_IN:=(OTHERS=>'0');ELSIF CLK'EVENT AND CLK='1' THENIF EN='1' THENIF MODE='1' THENIF CQ_IN<65535 THENCQ_IN:=CQ_IN+1;COUT<='0';ELSE CQ_IN:=(OTHERS=>'0'); COUT<='1';END IF;ELSIF MODE='0' THENIF CQ_IN>0 THENCQ_IN:=CQ_IN-1;COUT<='0';ELSECQ_IN:=(OTHERS=>'1');COUT<='1';END IF;END IF;END IF;END IF;CQ<=CQ_IN;END PROCESS; END behav;。

基于pspice的十六位二进制同步计数器

基于pspice的十六位二进制同步计数器

EDA课程考试报告题目:同步十六位二进制计数器专业:电子信息科学与技术班级:11 电科(专升本)姓名: 陈泓宇学号:11P110657000041时间:2012-6-8一.总体设计思路:此次设计首先是考虑到了利用JK触发器的分频特性来对脉冲计数。

起初是由三位二进制加法器的原理联想到扩展到更多的位数。

首先在我们谈到的很多计数器当中,如单片机的时钟脉冲等等,都会用到十六位以及三十二位。

所以考虑到仿真实验十六位的计数电路。

该电路首先是在同步二进制的计数原理上加以门电路来实现74LS161的芯片对四位二进制的计数功能,然后利用74LS161芯片级联来实现十六位二进制的计数功能。

二.系统总的框图结构:1.首先是同步三位加法计数器的原理框图:2利用同步计数器的原理,加以门电路来合成74LS161芯片:3.74LS161级联图:三.各模块的结构及功能分析:1.同步三位二进制加法计数器计数器:同步三位二进制的真值表:由于JK触发器都有不定状态的影响,所以这当中均使用的是带有预置使能端的JK触发器。

这个预置断同时也是清零端,使各触发器的初态为均为0.分析:1).由结构图可知:Q2[n]=Q1[n+1].Q0[n+1] ————[ .为逻辑与]2).由三个JK触发器的输出端时序波形来作为脉冲的计数显示端口,达到计数的功能。

3).仿真的时序波形图:该处的参数设置是:仿真时间0---1us。

由时序波形图:Q2Q1Q0对应cp脉冲的个数的二进制,所以用JK触发器的输出端来表示计数的个数的二进制。

该仿真的输出文本文件output profile 如下:** Creating circuit file "sanweierjinzhijishu-SCHEMA TIC1-CHY.sim.cir"** W ARNING: THIS AUTOMATICALLY GENERATED FILE MAY BE OVERWRITTEN BY SUBSEQUENT SIMULATIONS*Libraries:* Local Libraries :* From [PSPICE NETLIST] section of d:\Program Files\Orcad\PSpice\PSpice.ini file:.lib "nom.lib"*Analysis directives:.TRAN 0 1us 0.PROBE V(*) I(*) W(*) D(*) NOISE(*).INC ".\"**** INCLUDING sanweierjinzhijishu-SCHEMA ***** source SANWEIERJINZHIJISHUX_U1 $D_HI CLK $D_HI CLEAR Q0 M_UN0001 $G_DPWR $G_DGND JKFFRX_U2 Q0 CLK Q0 CLEAR Q1 M_UN0002 $G_DPWR $G_DGND JKFFRX_U3 N00838 CLK N00838 CLEAR Q2 M_UN0003 $G_DPWR $G_DGND JKFFRU_DSTM1 STIM(1,1) $G_DPWR $G_DGND CLEAR IO_STM IO_LEVEL=0+ 0 0+ +.03uS 1+REPEA T FOREVER+ +.98uS 0+ +.03uS 1+ ENDREPEATU_DSTM2 STIM(1,1) $G_DPWR $G_DGND CLK IO_STM IO_LEVEL=0+ 0 0+ +.02uS 1+REPEA T FOREVER 【时钟周期为0.04us,高低电平各为0.02us】+ +.02uS 0+ +.02uS 1+ ENDREPEATX_U4 Q1 Q0 N00838 $G_DPWR $G_DGND AND2**** RESUMING sanweierjinzhijishu-SCHEMATIC1-CHY.sim.cir ****.END**** 06/19/12 13:37:03 ********* PSpice 9.2 (Mar 2000) ******** ID# 1 ********** Profile: "SCHEMA TIC1-CHY" [ C:\sanweierjinzhijishu-SCHEMA TIC1-CHY.sim ]**** Digital Gate MODEL PARAMETERS2 关于74LS161芯片的各模块结构及功能:74LS161 芯片的外引脚74LS161芯片74ls161计数时的外部引脚连接图同步四位二进制74LS161的计数真值表:74LS161的计数功能真值表:此功能在74LS161级联构成十六位二进制的计数时,利用了ENT和ENP 两个端口的功能,在ENP=1的情况下利用ENT为0时保持,为1时启动计数有所体现。

EDA实验报告 4位全加器,16位频率计数器

EDA实验报告 4位全加器,16位频率计数器

实验课程名称:EDA技术与应用实验项目名称4位全加器实验实验成绩实验者专业班级组别同组者实验日期一、实验目的1.进一步加深理解全加器的工作原理及电路组成,加深对EDA技术的掌握。

2.熟悉利用Quartus Ⅱ的原理图输入方法设计简单组合电路,掌握层次化设计的方法,并通过一个四位全加器的设计把握原理图输入方式设计的详细流程。

二、实验内容实验内容1:按照书本4.5.1节完成半加器和1位全加器的设计,包括用原理图输入,编译,综合,适配,仿真,实验板上的硬件测试,并将此全加器电路设置成一个元件符号入库。

实验内容2:建立一个更高层次的原理图,利用以上获得的1位全加器构成4位全加器,并完成编译,综合,适配,仿真和硬件测试。

三、实验仪器1.计算器及操作系统2.Quartus II软件四、实验原理一个4位全加器可以由4个1位全加器构成,加法器间的进位可以串行方式实现,即将低位加法器的进位输出cout与相邻的高位加法器的最低进位输入信号cin相接。

1、半加器描述根据半加器真值表可以画出半加器的电路图。

a b so Co0 0 0 00 1 1 01 0 1 01 1 0 1表1半加器h_adder真值表图1 半加器h_adder电路图2、1位全加器描述一位全加器可以由两个半加器和一个或门连接而成,因而可以根据半加器的电路原理图或真值表写出1位全加器的VHDL 描述。

图2 1位全加器电路图3、4位全加器设计描述4位全加器可以看做四个1位全加器级联而成,首先采用基本逻辑门设计一位全加器,而后通过多个1位全加器级联实现4位全加器。

其中,其中cin 表示输入进位位,cout 表示输出进位位,输入A 和B 分别表示加数和被加数。

S 为输出和,其功能可用布尔代数式表示为:S=A+B+Ciii i i o ABC ABC ABC ABC C +++=首先根据一位全加器的布尔代数式应用基本逻辑门设计一位全加器,而后仿真验证一位全加器设计,准确无误后生成元件,供4位全加器设计用。

EDA技术与应用课后习题答案(2)

EDA技术与应用课后习题答案(2)

EDA技术与应用课后习题答案(2)END IF;END PROCESS;PR02:PROCESS(s1)BEGINIF s1=”0” THEN outy<=a1;ELSE outy<=tmp;END IF;END PROCESS;END ARCHITECTURE ONE;END CASE;4-4.下图是一个含有上升沿触发的D触发器的时序电路,试写出此电路的VHDL设计文件。

4-4.答案LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY MULTI ISPORT(CL:IN STD_LOGIC; --输入选择信号CLK0:IN STD_LOGIC; --输入信号OUT1:OUT STD_LOGIC);--输出端END ENTITY;ARCHITECTURE ONE OF MULTI ISSIGNAL Q : STD_LOGIC;BEGINPR01: PROCESS(CLK0)BEGINIF CLK ‘EVENT AND CLK=’1’THEN Q<=NOT(CL OR Q);ELSEEND IF;END PROCESS;PR02: PROCESS(CLK0)BEGINOUT1<=Q;END PROCESS;END ARCHITECTURE ONE;END PROCESS;4-5.给出1位全减器的VHDL描述。

要求:(1) 首先设计1位半减器,然后用例化语句将它们连接起来,图3-32中h_suber是半减器,diff是输出差,s_out是借位输出,sub_in 是借位输入。

(2) 以1位全减器为基本硬件,构成串行借位的8位减法器,要求用例化语句来完成此项设计(减法运算是 x – y - sun_in = diffr) 4-5.答案底层文件1:or2a.VHD实现或门操作LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY or2a ISPORT(a,b:IN STD_LOGIC;c:OUT STD_LOGIC);END ENTITY or2a;ARCHITECTURE one OF or2a ISBEGINc <= a OR b;END ARCHITECTURE one;底层文件2:h_subber.VHD实现一位半减器LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY h_subber ISPORT(x,y:IN STD_LOGIC;diff,s_out::OUT STD_LOGIC);END ENTITY h_subber;ARCHITECTURE ONE OF h_subber ISSIGNAL xyz: STD_LOGIC_VECTOR(1 DOWNTO 0); BEGINxyz <= x & y;PROCESS(xyz)BEGINCASE xyz ISWHEN "00" => diff<='0';s_out<='0';WHEN "01" => diff<='1';s_out<='1';WHEN "10" => diff<='1';s_out<='0';WHEN "11" => diff<='0';s_out<='0';WHEN OTHERS => NULL;END CASE;END PROCESS;END ARCHITECTURE ONE;顶层文件:f_subber.VHD实现一位全减器LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY f_subber ISPORT(x,y,sub_in:IN STD_LOGIC;diffr,sub_out:OUT STD_LOGIC);END ENTITY f_subber;ARCHITECTURE ONE OF f_subber IS COMPONENT h_subberPORT(x,y:IN STD_LOGIC;diff,S_out:OUT STD_LOGIC);END COMPONENT;COMPONENT or2aPORT(a,b:IN STD_LOGIC;c:OUT STD_LOGIC);END COMPONENT;SIGNAL d,e,f: STD_LOGIC;BEGINu1: h_subber PORT MAP(x=>x,y=>y,diff=>d,s_out=>e);u2: h_subber PORT MAP(x=>d,y=>sub_in,diff=>diffr,s_out=>f);u3: or2a PORT MAP(a=>f,b=>e,c=>sub_out);END ARCHITECTURE ONE;END ARCHITECTURE ART;4-6.根据下图,写出顶层文件MX3256.VHD的VHDL设计文件。

可编程逻辑实验 ——16进制计数器设计

可编程逻辑实验 ——16进制计数器设计

试验一:16进制加减计数器——07电子 马路 0736065一: 实验程序。

实验要求:用VHDL 语言设计一个16进制加减计数器,计数方向可以由外界输入信号控制,带有清零和置位,输出除了包括计数值外还应包括进位和借位。

实验程序:程序说明:clk :为时钟信号。

cr :为清零信号。

set :为置位信号。

s :为加减计数的方向控制信号。

cin :为置位输入信号,定义为4位的总线形式。

Co :为进位信号。

bo :为借位信号。

q :为输出信号。

功能说明:在进程p1中:当有清零信号cr ,即cr=1时,计数器清零。

当有置位信号时,将置入的数赋给信号po 。

当有时钟的下降沿来时,并且加减方向控制信号s 为0时,计数器做加法运算(如果一开机就是4位输出全高,则当时钟来LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY CNT16 ISPORT(clk,cr,set,s:IN std_logic;cin:INstd_logic_vector(3 DOWNTO 0);q:OUTstd_logic_vector(3 DOWNTO 0);co,bo:OUT std_logic);END;ARCHITECTURE w2 OF CNT16 ISSIGNAL po:std_logic_vector(3 DOWNTO0);BEGINp1:PROCESS(clk,cr,set,cin)BEGINIF cr='1' THEN po<="0000";elsif set='1' then po<=cin;ELSE IF clk 'EVENT AND clk='0' THENIF s='0' THENIF po=15 THEN po<="0000"; ELSE po<=po+1; END IF; ELSE IF po=0 THEN po<="1111"; ELSE po<=po-1; END IF; END IF; END IF; END IF; END PROCESS; p2:PROCESS(s) BEGIN IF s='0' THEN co<=po(3)AND po(2) AND po(1) AND po(0); ELSE co<='0'; bo<=NOT po(3) AND NOT po(2) AND NOT po(1) AND NOT po(0); END IF; q<=po; END PROCESS; END;时,计数器从零开始计数);当s为1时,做减法运算(当计数器初值为0,则时钟沿之前先向bo借一位,然后在时钟沿之后开始做减法运算)。

用verilog编写16位加法器乘法器自动售货机

用verilog编写16位加法器乘法器自动售货机

Verilog课程实验报告实验1十六位超前进位加法器1.1系统设计要求用超前进位加法器实现一个有符号位的16位加法器,并且考虑溢出的情况2.1详细设计根据超前进位加法器的原理Co = G | ( P & Ci ) S = P ^ Ci 设计出4位加法器的子模块,然后通过4个4位加法器的相连来得到十六位的加法器。

原理如下图所示。

溢出用flag=0表示。

3.1程序//-------------16位超前进位加法器-----------------module cla16(a,b,s,flag); //含有a ,b ,输出s ,进位flag 的模块 input [15:0] a,b;//输入a ,b output [16:0] s; //输出 s output reg flag; //进位FA FA FA FAP 0G 1P 0G 1P 2G 2P 3G 3C o,3C o,2C o,1C o,0C i,0FA FA FA FAP 0G 1P 0G 1P 2G 2P 3G 3C o,2C o,1C o,0C i,0C o,3M u l t i p l e x e rBP=P o P 1P 2P 3Idea: If (P0 and P1 and P2 and P3 = 1)then C o3 = C 0, else “kill” or “generate”.wire pp4,pp3,pp2,pp1;wire gg4,gg3,gg2,gg1;wire [15:0] Cp;wire [15:0] p,g;pg i0 (a[15:0],b[15:0],p[15:0],g[15:0]);add i1 (p[3],p[2],p[1],p[0],g[3],g[2],g[1],g[0],pp1,gg1);add i2 (p[7],p[6],p[5],p[4],g[7],g[6],g[5],g[4],pp2,gg2);add i3 (p[11],p[10],p[9],p[8],g[11],g[10],g[9],g[8],pp3,gg3);add i4 (p[15],p[14],p[13],p[12],g[15],g[14],g[13],g[12],pp4,gg4);add i5 (pp4,pp3,pp2,pp1,gg4,gg3,gg2,gg1,pp5,gg5);//调用四位加法器模块add4 l0 (p[3],p[2],p[1],p[0],g[3],g[2],g[1],g[0],1'b0,Cp[3],Cp[2],Cp[1],Cp[0]);add4 l1 (p[7],p[6],p[5],p[4],g[7],g[6],g[5],g[4],Cp[3],Cp[7],Cp[6],Cp[5],Cp[4]);add4 l2 (p[11],p[10],p[9],p[8],g[11],g[10],g[9],g[8],Cp[7],Cp[11],Cp[10],Cp[9],Cp[8]);add4 l3 (p[15],p[14],p[13],p[12],g[15],g[14],g[13],g[12],Cp[11],Cp[15],Cp[14],Cp[13],Cp[12]); assign s[0]=p[0]^1'b0; //保留位assign s[1]=p[1]^Cp[0];assign s[2]=p[2]^Cp[1];assign s[3]=p[3]^Cp[2];assign s[4]=p[4]^Cp[3];assign s[5]=p[5]^Cp[4];assign s[6]=p[6]^Cp[5];assign s[7]=p[7]^Cp[6];assign s[8]=p[8]^Cp[7];assign s[9]=p[9]^Cp[8];assign s[10]=p[10]^Cp[9];assign s[11]=p[11]^Cp[10];assign s[12]=p[12]^Cp[11];assign s[13]=p[13]^Cp[12];assign s[14]=p[14]^Cp[13];assign s[15]=p[15]^Cp[14];assign s[16]=pp5|gg5;//溢出判断模块always@(a,b,s)beginif ((a[15]==1&&b[15]==1&&s[15]==0)||(a[15]==0&&b[15]==0&&s[15]==1))flag=1'b1;elseflag=1'b0;endendmodule//4位加法器模块module add4(p[3],p[2],p[1],p[0],g[3],g[2],g[1],g[0],Co,Cp[3],Cp[2],Cp[1],Cp[0]);input [3:0]p,g;output [3:0] Cp;assign Cp[0]=g[0]|p[0]&Co;assign Cp[1]=g[1]|p[1]&Cp[0];assign Cp[2]=g[2]|p[2]&Cp[1];assign Cp[3]=g[3]|p[3]&Cp[2];endmodule//模块间的进位module add(p[3],p[2],p[1],p[0],g[3],g[2],g[1],g[0],pp,gg); input [3:0]p,g;output pp,gg;assign pp=p[3]&p[2]&p[1]&p[0];assign gg=g[3]|(p[3]&(g[2]|p[2]&(g[1]|p[1]&g[0]))); endmodule//进位信号的产生module pg(a,b,p,g);input [15:0] a,b;output [15:0] p,g;assign p=a^b;assign g=a&b;endmodule4.1测试程序通过产生一个随机输入a和b,来验证c=a+b。

EDA习题答案

EDA习题答案
y => b(i), sub_in => stmp(i), diffr => c(i), sub_out => stmp(i+1)); end generate ; end;
习题 5-6 根据图 5-23,写出顶层文件 MX3256.VHD 的 VHDL 设计文件。
习题 4-11 用 D 触发器设计 3 位二进制加法计数器。 解:注意 D 触发器级联时应取非端,否则只能作分频器
下图是异步计数器方式,同步计数器方式请读者自行考虑
习题 4-12 用 D 触发器构成按循环码(000->001->011->111->101->100->000)规律工作的六进制同步计数 器。
第 1 章 概述
11
diff : OUT STD_LOGIC; s_out : OUT STD_LOGIC ); end component; signal t0,t1,t2 : STD_LOGIC; BEGIN u1 : h_suber PORT MAP(x => x, y => y, diff => t0, s_out => t1); u2 : h_suber PORT MAP(x => t0, y => sub_in, diff => diffr, s_out => t2); sub_out <= t1 OR t2; END; (2)8 位减法器,关于生成语句可以参见第 9 章
0
0
library ieee; use ieee.std_logic_1164.all;
entity h_suber is port ( x,y : in std_logic; diff,s_out : out std_logic );

VerilogHDL简单计算器设计-文档

VerilogHDL简单计算器设计-文档

目录第一章设计目的及任务要求 (1)1.1 设计目的 (1)1.2 设计任务 (1)1.3 课设要求 (1)第二章设计思路 (1)2.1 设计总体框图 (1)2.2 设计原理 (1)2.2.1 计算其原理 (1)2.2.2 数码显示原理 (2)2.2.3 八位数码管扫描的原理 (2)第三章设计源程序及分析 (2)3.1 计算器模块 (2)3.1.1 计算器源程序 (2)3.1.2 计算器程序分析 (2)3.2 数码管显示部分 (3)3.2.1 数码管显示源程序 (3)3.2.2 数码管显示程序分析 (4)3.3 循环扫描模块 (4)3.3.1 循环扫描程序 (4)3.3.2 循环程序分析 (5)3.4 总程序及其分析 (5)第四章时序仿真和结果验证 (8)4.1 计算器时序仿真及其分析 (8)4.2 数码管时序仿真及分析 (8)4.3 总体时序仿真图 (8)4.4 结果验证 (8)第五章心得体会 (9)第一章设计目的及任务要求1.1 设计目的(1)进一步加强熟练EDA基础知识。

(2)熟练掌握Quartus 6.0软件的使用以及用该软件编程和仿真的全过程。

(3)培养独立思考问题,解决问题的能力以及查阅相关资料和资料的正确使用能力,为明年的毕业设计打下良好的设计基础。

1.2 设计任务设计一个简单计算器,输入为8位二进制数,分别用两位数码管显示,输出的计算结果为16位二进制数,并用四位数码管显示,能够实现+、-、 *、/ 四种运算,其中除法的结果显示分为商和余数两部分,分别用两位数码管显示。

1.3 课设要求(1)说明题目的设计原理和思路、采用方法及设计流程。

(2)系统框图、Verilog语言设计程序或原理图。

(3)对各子模块的功能以及各子模块之间的关系做较详细的描述。

(4)详细说明调试方法和调试过程。

(5)说明测试结果:仿真时序图和结果显示图,并对其进行说明和分析。

第二章设计思路2.1 设计总体框图有分析可知,本次课程设计可以分成五个木块来实现相应的功能,分别是输入模块,计算模块,扫描模块,输出模块以及显示模块。

16键计算器源程序及仿真实验报告

16键计算器源程序及仿真实验报告

单片机课程设计报告设计题目:简易计算器系统设计专业班级:电信07101班设计者:潘雄文(24)设计者:罗芬(31)设计者:袁雅丽(33)指导教师:王先春老师设计时间: 2009.12.7-2009.12.18简易计算器系统设计一、设计目的1、进一步熟悉和掌握简单计算器的内部结构及工作原理。

2、掌握计算器中单片机的接口技术相关外围芯片的外特性,控制方法。

3、通过课程设计,掌握以简单计算器系统核心的电路设计的基本方法和技术,了解相关电路参数的计算方法。

二、设计要求设计一个可以进行2位数四则运算的计算器,要求:1,用按键输入数和运算符号;2,用LED显示运算过程和结果(十进制数);3,可以表示出当前的运算类型;4,具有清零和复位功能;5,具有连续运算功能。

注:加和改的部分:1、具有开机和关机动画显示功能;2、当按下按键时,能发出声音;3、把用LED显示运算过程和结果改为用液晶显示三、设计方案本设计是一个实现加,减,乘,除的计算器,AT89C51的P3口用于键盘输入,接4*4矩阵键盘,P2口用于控制液晶显示,P0口用于数据输入,用一个排阻RP1作为P0口的上拉电阻它可以实现8位正负数的加、减、乘、除运算。

四、硬件电路设计电路原理图AT89C51简介:AT89C51是一种带4K字节闪烁可编程可擦除只读存储器(FPEROM—FlashProgrammable and Erasable Read Only Memory)的低电压,高性能CMOS 8位微处理器,俗称单片机。

AT89C2051是一种带2K字节闪烁可编程可擦除只读存储器的单片机。

单片机的可擦除只读存储器可以反复擦除100次。

该器件采用ATMEL高密度非易失存储器制造技术制造,与工业标准的MCS-51指令集和输出管脚相兼容。

由于将多功能8位CPU和闪烁存储器组合在单个芯片中,ATMEL的AT89C51是一种高效微控制器,AT89C2051是它的一种精简版本。

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

用程序输入法设计16位二进制加法计算器班级 xxxx 姓名 xxx 学号 xxxxx内容提要:计数器是数字系统中使用较多的一种时序逻辑器件。

计数器的基本功能是统计时钟脉冲的个数,即对脉冲实现计数操作。

计数器也可以作为分频、定时、脉冲节拍产生器和脉冲序列产生器使用。

计数器的种类很多,按构成计数器中的各触发器是否使用一个时钟脉冲源来分,可分为同步计数器和异步计数器;按进位体制的不同,可分为二进制计数器、十进制计数器和任意进制计数器;按计数过程中数字增减趋势的不同,可分为加法计数器、减法计数器和可逆计数器;还有可预制数和可编计数器等等。

本次课程设计将利用众多集成电路软件软件中的Quartus II软件,使用VHDL语言编程完成论文《用程序输入方法设计一个16位二进制加法计数器》,调试结果表明,所设计的计数器正确实现了计数功能。

关键词:二进制;加法计数器;VHDL语言1问题分析计数器是数字系统中使用较多的一种时序逻辑器件。

计数器的基本功能是统计时钟脉冲的个数,即对脉冲实现计数操作。

其工作原理可概述为:当输入时钟脉冲的一个上升沿(也可以是下降沿)来临时,二进制数据的低一位加1(或减1),并向高位进1(或借1)。

在没有外部约束条件时,计数器可进行与其二进制位数对应的数值的相应进制的自循环计数,如位数为3的计数器可进行8进制的自循环加法或减法计数。

可根据需要来设置计数器的位数,并通过外部约束条件来人为设定计数器的计数模数,来得到计数进制符合需要的N 进制计数器。

所谓N 进制计数器,是指一个计数器的计数过程,在经历时钟脉冲信号的个为N 之后,二进制数据又回到初始状态的计数器。

表1.1计数器的状态表图1.1计数器的状态图2 设计原理本论文所设计的16位二进制加法计数器,其中16位计数器输出Q[15..0]=0000000000000000,时钟CLK 的上升沿到来时,计数器处于预置工作状态,输出Q[15..0]= D[15..0],D[15..0]是16位并行数据输入端,COUT 是进位输入端,当UPDOWN=0(进行加法操作)且输出Q[15..0]=1111111111111111时,COUT=1表示进位输出。

3 程序ENTITY CNT16 ISPORT (CLK : IN BIT;Q : BUFFER INTEGER RANGE 65535 DOWNTO 0 );END;ARCHITECTURE bhv OF CNT16 ISBEGINPROCESS (CLK) BEGINIF CLK'EVENT AND CLK = '1' THENQ <= Q + 1; END IF;END PROCESS;END bhv;4 编译与仿真1.编辑文件(1)启动Quartus,双击桌面上的QuartusⅡ图标或单击开始按扭,启动QuartusⅡ。

(2)编辑文件,单击标题栏中的File→New对话框。

单击New对话框的Device Design Files 选项卡,选择编译文件的语言类型。

这里选择VHDL Files,选好后单击【OK】按钮,打开VHDL 文本编辑器窗口,并在其中输入图1所示的程序。

图1 文本编辑器输入完成之后,单击File→Save As选项,将编辑的文本文件存在已建立的文件夹c:\Users下,存盘文件名应该与VHDL程序的实体名一致,即Vhdl1.vhd。

当出现问句Do you want to create…时,可选“否”。

2.创建工程(1)打开建立新工程向导,单击File→New Project Wizard菜单,出现新建工程向导对话框,单击【Next】按钮,出现如图2所示的工程基本设置对话框。

在最上面的输入框中输入工作库文件夹的地址,本例为C:\User/GongYu/Desktop/EDA/cnt16,或者单击该对话框最上一栏右侧的【…】按钮,出现选择文件夹的目录。

(2) 将设计文件加入工程中,单击图5中的【Next】按钮,在弹出的对话框中,将与本工程有关的文件加入,有两种方法:一种是单击右边的【Add All】按钮,将设定工程目录中的所有VHDL文件加入到工程文件栏;另一种是单击【Add …】按钮,从工程目录中选出相关的VHDL文件。

图2中间的输入框就是该工程的名称,一般可以用顶层文件的名称作为工程名称,本例的顶层文件名是cnt16。

最下面的输入框要求输入顶层设计文件实体的名称,本例顶层文件的实体名称是cnt16。

图2 工程基本设置和情况(3) 选择仿真器和综合器类型,单击图2中的【Next】按钮,这时弹出选择仿真器和综合器类型的窗口。

如果选择默认的NONE,表示使用QuartusⅡ中自带的仿真器和综合器。

(4) 选择目标芯片,单击【Next】按钮,根据系统设计的实际需要选择目标芯片。

首先在Family 栏选择芯片系列。

在此栏下方,询问选择目标器件的方式,选No,表示允许编程器自动选择该系列中的一个器件;单击Yes选项,表示手动选择。

本例采用手动选择,单击【Next】按钮,选择此系列的具体芯片:EP20K30ETC144-1。

单击【Next】按钮后,弹出工程设置统计窗口。

(5) 结束设置,最后单击【Finish】按钮,结束设置。

在QuartusⅡ主窗口的左侧。

3.目标芯片的配置(1) 选择目标芯片,单击标题栏中的Assignments→Settings菜单,在弹出的对话框中选Category下的Device选项,然后在右侧选择目标芯片EP20K30ETC144-1(此芯片已在建立工程时选定了)。

也可在Available devices栏分别单击Package(封装形式)、Pin count(管脚数量)和Speed(速度)来选定芯片。

(2) 选择目标器件编程配置方式,单击【D evice & Pin Options…】按钮进入器件与管脚操作对话框,首先选择Configuration项,在此框的下方有相应的说明,在此可选Configuration方式为Passive Serial,这种方式可以直接由PC机配置,也可由专用配置器件进行配置。

使用的配置器件选Auto(系统自动配置),如图3所示。

图3 配置选项卡(3) 选择输出配置,单击Programming Files选项卡,可以选Hexadecimal,即产生下载文件的同时,产生十六进制配置文件,Start(起始地址)设为0,Count(计数)设为Up(递增方式)。

如图4所示。

此文件可用于单片机与EPROM构成的FPGA配置电路系统。

图4 程序文件选项卡(4) 选择目标器件闲置管脚的状态,单击Unused Pins选项卡,可根据实际需要选择目标器件空闲管脚的状态,有三种状态可供选择:作为输入并呈高阻状态、作为输出并呈低电平状态、作为输出并呈不确定状态。

也可以对空闲管脚不作任何选择,而由编程器自动配置。

4.编译(1)编译,单击标题栏中的Processing→Start Compilation选项,启动全程编译。

编译包括对设计输入的多项处理操作,其中包括排错、数据网表文件提取、逻辑综合、适配、装配文件(仿真文件与编程配置文件)生成,以及基于目标器件的工程时序分析等。

如果工程文件中有错误,在下方的信息栏中会显示出来。

可双击此条提示信息,在闪动的光标处(或附近)仔细查找,改正后存盘,再次进行编译,直到没有错误为止。

编译成功的标志是所有进程都完成。

(2)阅读编译报告,编译成功后可以看到编译报告。

左边栏目是编译处理信息目录,右边是编译报告。

这些信息也可以在Processing菜单下的Compilation Report处见到。

5.仿真仿真就是对设计项目进行一项全面彻底的测试,以确保设计项目的功能和时序特性符合设计要求,保证最后的硬件器件的功能与原设计相吻合。

仿真可分为功能仿真和时序仿真。

功能仿真只测试设计项目的逻辑行为,而时序仿真不但测试逻辑行为,还测试器件在最差条件下的工作情况。

(1) 建立波形文件,与MAX+plusⅡ仿真操作相同,仿真前必须建立波形文件。

单击File→New选项,打开文件选择窗口。

然后单击Other Files选项卡,选择其中的Vector Waveform File 选项。

(2) 打开波形编辑器,单击【OK】按钮,即出现空白的波形编辑器,如图5所示。

图5 波形编辑器为了使仿真时间设置在一个合理的时间区域上,单击Edit→End Time选项,在弹出窗口中的Time输入框键入50,单位选us,即整个仿真域的时间设定为50微秒。

单击【OK】按钮。

结束设置后,要将波形文件存盘。

单击File→Save as选项,将波形文件以文件名cnt16.vwf存入文件夹C:\Users中。

(3) 输入信号节点,单击View→Utility Windows→Node Finder选项,会打开一个对话框。

在该对话框的Filter空白栏中选Pins:all,然后点击【list】按钮。

在下方的Nodes Found窗口中会出现了设计工程的所有端口管脚名。

用鼠标将输入端口节点A、B和输出信号节点C逐个拖到波形编辑窗口。

单击关闭按钮,关闭Node Finder窗口。

图6 已编辑输入波形(4) 编辑输入波形,波形编辑器的按钮操作方法与MAX+plusⅡ相同。

利用这些按钮,分别给输入管脚编辑波形。

(5) 启动仿真及阅读仿真报告,单击标题栏中的Processing→Start Simulation选项,即可启动仿真器。

图7 仿真结果由仿真图可以看到仿真结果是正确的,单击左侧的栏目,能够打开仿真报告。

5 个人小结经过本次课程结课论文,自己对计数器的工作原理有了更深的理解。

本次课程设计使用的是Quartus II可编程逻辑器件软件开发平台,经过本次课程设计后,自己能够更加熟悉Quartus II软件开发平台的各项功能的操作流程。

但自己只是对Quartus II软件中的VHDL编程语言有一定的了解,而对Quartus II软件的其他功能还缺乏认识,为了在以后的学习工作中能够较熟练地使用Quartus II软件,自己还必须花一定的时间在该软件的学习上。

随着现代计算机技术的发展,各方面的设计日渐趋于自动化的计算机设计。

Quartus II作为一个功能强大的可编程逻辑器件软件开发平台,它电子线路设计自动化中的作用不言而喻。

而经过本次课程设计后,发现自己在该软件的使用能力上还是非常有限,所以对该软件的学习还有待加强。

在编程过程中发现自己对各电子线路系统的基础理论只是还相当缺乏,没有较好的基础理论知识,即使有再好的开发软件也是很难设计出有价值的电子线路系统的。

所以要不断学习积累基础理论知识,有了夯实的理论基础才能顺利设计出结构简单、性能优良的电子线路系统。

相关文档
最新文档