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

合集下载

十六进制加减计数器实验报告

十六进制加减计数器实验报告

本科生实验报告十六进制加减计数器电路实验专业名称:课程名称:数据逻辑与EDA指导教师:学生学号:学生姓名:二○一九年十一月1、实验目的1.1了解时序逻辑电路的基本功能1.2掌握时序逻辑电路的设计方法1.3熟悉时序逻辑电路的工作过程2、实验原理2.1定义:在逻辑电路中,任何时刻的稳定输出不仅取决于该时刻的输入,且与过去的输入相关。

2.2类型:边沿触发器、电平触发器、加法计数器、减法计数器、可逆计数器、序列检测器、采样控制器等。

3、实验设备:3.1 PC机3.2 教学实验箱3.3 通信线4、实验内容:4.1任务:设计一个两位16进制加减可逆的计数器,具有内部脉冲和手动计数功能,结果在7段数码管上显示。

4.2接线:(1)用插线连接插孔24,32,25到实验台的1HZ,10HZ和100HZ上,作为CLK1HZ,CLK10HZ,CLK100kHZ,三个频率的输入端;(2)用插线将实验台上的6个数码管的七段码a-h连接到插孔40,41,42,43,44,45,47,48上,作为七段码输出端;(3)七段数码管的位码S(0)-S(5)接到实验台的插孔51,52,53,55,57,58上,作为七段码位码输出端;(4)实验台上的开关K0接到插孔26上,作为en的输入开关。

en=1时手动,en=0时为自动;(5)手动脉冲按键din接单脉冲,然后接在28脚上输入;(6)复位键rst接K1开关连接在27脚输入;(7)加减控制键rev接K2开关连接在31脚输入4.3硬件描述语言源代码:module cnt(clk100khz,clk1hz,clk10hz,rst,en,din,scan,dout,rev);input rst;//复位键input rev;//加减控制器input en;//手动或自动计数开关input din;//手动计数脉冲input clk100khz,clk1hz,clk10hz;//分别为数码管刷新,自动计数,手动计数频率output[7:0]dout;//数码管七段码output[5:0]scan;//数码管位码reg[7:0]dout;reg[5:0]scan;reg f1,f2,c;//数码管个位和十位敏感信号;c为手动计数参数reg[2:0]cnt;//数码管扫描参数reg[3:0]dat;//数码管位码扫描参数reg[3:0]data1,data2;//个位和十位计数参数always@(posedge clk10hz) //设置自动计数和手动计数begin if(!din) c<=1; //din为1时,c=0;din为0时,c=1。

EDA课后答案

EDA课后答案
数字逻辑系统设计
ENTITY buf3s IS


3-1. 画出与下例实体描述对应的原理图符号元件: 画出与下例实体描述对应的原理图符号元件: -- 实体 : 三态缓冲器 实体1: -- 输入端 -- 使能端 -- 输出端
PORT (input : IN STD_LOGIC ; enable : IN STD_LOGIC ; output : OUT STD_LOGIC ) ; END buf3x ; ENTITY mux21 IS PORT (in0, --实体 : 实体2: 实体 in1, sel :
九江学院电子工程学院 张友木主讲


数字逻辑系统设计
3-4. 给出 位全减器的 给出1位全减器的 位全减器的VHDL描述。要求: 描述。 描述 要求:


(1) 首 先 设 计 1 位 半 减 器 , 然 后 用 例 化 语 句 将 它 们 连 接 起 来 , 图 3-32 中 h_suber是半减器,diff是输出差,s_out是借位输出,sub_in是借位输入。 是半减器, 是输出差, 是借位输出, 是借位输入。 是半减器 是输出差 是借位输出 是借位输入 (2) 以1位全减器为基本硬件,构成串行借位的 位减法器,要求用例化语 位全减器为基本硬件, 位减法器, 位全减器为基本硬件 构成串行借位的8位减法器 句来完成此项设计(减法运算是 句来完成此项设计 减法运算是 x – y - sun_in = diffr)。 。
选 九江学院电子工程学院图3-30 4选1多路选择器 张友木主讲 多路选择器
数字逻辑系统设计
library ieee; use ieee.std_logic_1164.all; entity sel4_if is port(s1,s0:in std_logic; a,b,c,d:in std_logic; y:out std_logic); end; architecture behave of sel4_if is begin process(a,b,c,d,s1,s0) begin if(s1='0' and s0='0') then y<=a; elsif (s1='0' and s0='1') then y<=b; elsif (s1='1' and s0='0') then y<=c; else y<=d; end if; end process; end; 九江学院电子工程学院 张友木主讲

EDA实验报告——计数器

EDA实验报告——计数器

EDA实验报告——计数器一、实验目的本实验主要是通过搭建计数器,了解计数器的基本原理和使用方法,掌握数字电路的设计方法及仿真分析方法。

二、实验原理计数器是数字电路的重要组成部分,在数字电路的多个应用中都有着广泛的应用。

计数器可以实现多种数字处理功能,如二进制计数、定量计数、计时、频率分频等。

三、实验材料1. Protues软件2. 74LS90集成电路3. 7段数码管4. 4位拨动开关5. 4个LED灯6. 电路板、杜邦线等。

四、实验内容1. 给定 74LS90 计数器数据手册,分析本实验使用到的 74LS90 芯片的接口及特性。

2. 根据实验需求,用 Protues 软件搭建计数器电路图。

3. 在计数器电路图中连通 74LS90 芯片的译码器输出端口,设置与四个拨动开关相连的输入端口以及 LED 显示器输出端口,实现计数器的计数。

4. 在计数器的输出端口增加 7 段数码管,通过数码管显示计数值。

5. 根据实验需求搭建模电流源电路,对实验电路进行仿真分析,并对仿真结果进行评估。

五、实验步骤2. 从库中拖动 74LS90 芯片、7 段数码管、拨动开关、LED 灯等元件到设计图中。

4. 在 74LS90 芯片工作模式的选择端口接上拨动开关,选择计数器的计数方式。

5. 配置模电流源电路,并设置仿真参数。

6. 进行仿真并记录仿真结果。

七、实验结果本实验搭建的计数器能够正确地进行计数,并且将计数结果通过数码管和 LED 灯显示出来。

在进行仿真分析时,根据仿真数据评估实验电路的合理性。

本实验通过搭建计数器,了解计数器的基本原理和使用方法,掌握数字电路的设计方法及仿真分析方法。

实验中主要学习了数字计数器的结构、性能和工作原理,在搭建计数器电路时主要包括了 74LS90 芯片的接口和设置以及输入输出端口的设置。

通过本实验,我进一步了解了计数器的基本知识和原理,也学习了如何使用 Protues 软件进行电路的搭建和仿真。

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

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

用程序输入法设计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表示进位输出。

模可变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译码器进行连接,使其达到实验的要求。

用单片机语言设计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创新性实验项目——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,满足轻量级计算需求。

可编程逻辑器件实验EDA-步长可变的加减计数器

可编程逻辑器件实验EDA-步长可变的加减计数器

实验六步长可变的加减计数器
一、实验目的
1、掌握加减法计数器以及特殊功能计数器的设计原理;
2、用HDL语言设计多功能计数器。

二、硬件需求
EDA/SOPC实验箱一台。

三、实验原理
计数器的步长是指计数器每次的改变量。

在很多应用场合,都希望计数器的步长可变。

所谓步长可变,也就是计数器的步长是一个不定值,具体是多少是要靠外部干预的,比如外部给定其步长为5,那么该计数器每次要么增加5,要么减少5,也就是说计数器每次的改变量是5。

这种步长可变的计数器才具有一定的实际意义,比如在直接数字频率合成DDFS 中的地址累加器就是一个步长可变的递增计数器。

四、实验内容
本实验要完成的任务就是设计一个8位的计数器,步长的改变量要求从0~15,实验中用拨挡开关模块的SW1A~SW4A来作为步长改变量的输入,用按键F1来控制计数器的增减,具体要求为:当F1输入为高时,计数器为步长可变的加计数器;当F1输入为低时,计数器为步长可变的减计数器。

计数器输出的Q值用七段数码管模块来表示。

实验中计数器的时钟频率为了便于眼睛观察,同上个实验一样用1Hz的时钟。

五、实验步骤
(1)实现程序
本实验采用顶层设计
元件例化
(2)仿真波形图
从仿真波形图可以看出,LED输出波形持续变化,以设定的步长,增减计数,产生相应的七位译码值。

(3)实际结果。

EDA流水灯,数码管显示01234567,加减计数,

EDA流水灯,数码管显示01234567,加减计数,

练习1.两位的循环彩灯,自定义的循环彩灯2.用另外的方式实现按键控制数码管加减3.设计一个在四个数码管上,显示拨码开关给定的值。

1、设计一个流水灯。

原理图设计:(8位流水灯)程序设计:(16位流水灯)module led_s(rst,clk,leds);input rst,clk;output [15:0] leds;reg [15:0] leds;reg [3:0]count;always @(posedge clk)beginif (rst)count <=16 'h00_00;elsebeginif(count==4'hf)count <=16 'h00_00;elsecount <=count+1;endendalways @(count)begincase(count)0: leds<= 16 'b0000_0000_0000_0001;1: leds<= 16 'b0000_0000_0000_0010;2: leds<= 16 'b0000_0000_0000_0100;3: leds<= 16 'b0000_0000_0000_1000;4: leds<= 16 'b0000_0000_0001_0000;5: leds<= 16 'b0000_0000_0010_0000;6: leds<= 16 'b0000_0000_0100_0000;7: leds<= 16 'b0000_0000_1000_0000;8: leds<= 16 'b0000_0001_0000_0000;9: leds<= 16 'b0000_0010_0000_0000;10: leds<=16 'b0000_0100_0000_0000;11: leds<=16 'b0000_1000_0000_0000;12: leds<=16 'b0001_0000_0000_0000;13: leds<=16 'b0010_0000_0000_0000;14: leds<=16 'b0100_0000_0000_0000;15: leds<=16 'b1000_0000_0000_0000;default: leds<=16 'hxxxx;endcaseendendmodule2、设计一个加减计数器,计数器的值在一位数码管上显示出来。

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)作业1.画出下例实体描述对应的原理图符号元件: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 mux22.图中所示的是4选1多路选择器,试分别用IF_THEN语句和CASE语句的表达方式写出此电路的VHDL程序。

选择控制的信号s1和s0为STD_LOGIC_VECTOR类型;当s1='0',s0='0';s1='0',s0='1';s1='1',s0='0'和s1='1',s0='1'分别执行y<=a、y<=b、y<=c、y<=d。

Library ieee;use ieee.std_logic_1164.all;useieee.std_logic_unsigned.all;entitymux4_1isport(s:instd_logic_vector(1 downto 0);a,b,c,d:instd_logic;y:out std_logic);endmux4_1;architecture arc of mux4_1issignal s1,s0:std_logic;begins1<=s(1);s0<=s(0);process(s1,s0)beginif(s1='0' and s0='0') then y<=a;elsif(s1='0' and s0='1') then y<=b;elsif(s1='1' and s0='0') then y<=c;elsif(s1='1' and s0='1') then y<=d;else null;end if;end process;end arc;libraryieee;use ieee.std_logic_1164.all;useieee.std_logic_unsigned.all;entitymux4_1isport(s:instd_logic_vector(1 downto 0);a,b,c,d:instd_logic;y:out std_logic);endmux4_1;architecture arc of mux4_1isbeginprocess(s)begincase s iswhen "00" => y<=a;when "01" => y<=b;when "10" => y<=c;when "11" => y<=d;when others => null;end case;end process;end arc;3.图中所示的是双2选1多路选择器构成的电路MUXK,对于其中MUX21A,当s='0'和'1'时,分别有y<='a'和y<='b'。

含有异步清零和计数使能的16位二进制加减可控计数器

含有异步清零和计数使能的16位二进制加减可控计数器

LIBRARY IEEE;USE cnt16 ISPORT(EN,RST,UPD,CLK : IN STD_LOGIC;OUT1: OUT STD_LOGIC_VECTOR(15 DOWNTO 0)); END cnt16;ARCHITECTURE bhv OF cnt16 ISSIGNAL QQ:STD_LOGIC_VECTOR(15 DOWNTO 0); BEGINPROCESS(EN,RST,UPD)BEGINIF RST='1' THENQQ<=(OTHERS=>'0'); --有复位信号清零ELSIF EN='1' THEN --EN位高电平开始计数IF CLK'EVENT AND CLK='1' THENIF UPD='1' THEN --当UDP为1加计数QQ<=QQ+1;ELSE --当UDP不为1减计数IF QQ > "0" THEN --当减到0时QQ<=QQ-1; --给QQ全1ELSEQQ<=(OTHERS=>'1');END IF;END IF;END IF;END IF;END PROCESS;OUT1<=QQ;END bhv;图1-1 16位二进制加减可控计数器的RTL图图1-2 16位二进制加减可控计数器的波形仿真图计数器和译码器合起来的程序LIBRARY IEEE;USE CNT4_YM ISPORT(CLK,RST,ENA:IN STD_LOGIC;COUT:OUT STD_LOGIC;LED7S:OUT STD_LOGIC_VECTOR(6 DOWNTO 0)); END CNT4_YM;ARCHITECTURE BEHV OF CNT4_YM ISSIGNAL CQI:STD_LOGIC_VECTOR(3 DOWNTO 0); BEGINPROCESS(CLK,RST,ENA)BEGINIF RST='1' THEN CQI<=(OTHERS=>'0');ELSIF CLK'EVENT AND CLK='1' THENIF ENA='1' THENIF CQI<9 THEN CQI<=CQI+1;ELSE CQI<=(OTHERS=>'0');END IF;END IF;END IF;IF CQI=9 THEN COUT<='1';ELSE COUT<='0';END IF;END PROCESS;PROCESS(CQI)BEGINCASE CQI ISWHEN"0000"=>LED7S<="0111111";WHEN"0001"=>LED7S<="0000110";WHEN"0010"=>LED7S<="1011011";WHEN"0011"=>LED7S<="1001111";WHEN"0100"=>LED7S<="1100110";WHEN"0101"=>LED7S<="1101101";WHEN"0110"=>LED7S<="1111101";WHEN"0111"=>LED7S<="0000111";WHEN"1000"=>LED7S<="1111111";WHEN"1001"=>LED7S<="1101111";WHEN"1010"=>LED7S<="1110111";WHEN"1011"=>LED7S<="1111100";WHEN"1100"=>LED7S<="0111001";WHEN"1101"=>LED7S<="1011110";WHEN"1110"=>LED7S<="1111001";WHEN"1111"=>LED7S<="1110001";WHEN OTHERS=>NULL;END CASE;END PROCESS;END BEHV;计数器和译码器分开的程序LIBRARY IEEE;USE JSYM ISPORT(CLK,RST,ENA:IN STD_LOGIC;COUT:OUT STD_LOGIC;OUTY:OUTSTD_LOGIC_VECTOR(3 DOWNTO 0));END JSYM;ARCHITECTURE BEHV OF JSYM ISBEGINPROCESS(CLK,RST,ENA)VARIABLE CQI:STD_LOGIC_VECTOR(3 DOWNTO 0);BEGINIF RST='1' THEN CQI:=(OTHERS=>'0');ELSIF CLK'EVENT AND CLK='1' THENIF ENA='1' THENIF CQI<9 THEN CQI:=CQI+1;ELSE CQI:=(OTHERS=>'0');END IF;END IF;END IF;IF CQI=9 THEN COUT<='1';ELSE COUT<='0';END IF;OUTY<=CQI;END PROCESS;END BEHV;LIBRARY IEEE;USE DECL7S ISPORT(A:IN STD_LOGIC_VECTOR(3 DOWNTO 0);LED7S:OUT STD_LOGIC_VECTOR(6 DOWNTO 0) ); END DECL7S;ARCHITECTURE BEHV OF DECL7S ISBEGINPROCESS(A)BEGINCASE A ISWHEN"0000"=>LED7S<="0111111";WHEN"0001"=>LED7S<="0000110";WHEN"0010"=>LED7S<="1011011";WHEN"0011"=>LED7S<="1001111";WHEN"0100"=>LED7S<="1100110";WHEN"0100"=>LED7S<="1101101";WHEN"0101"=>LED7S<="1111101";WHEN"0110"=>LED7S<="0000111";WHEN"0111"=>LED7S<="1111111";WHEN"1000"=>LED7S<="1101111";WHEN"1010"=>LED7S<="1110111";WHEN"1011"=>LED7S<="1111100";WHEN"1100"=>LED7S<="0111001";WHEN"1101"=>LED7S<="1011110";WHEN"1110"=>LED7S<="1111001";WHEN"1111"=>LED7S<="1110001";WHEN OTHERS=>NULL;END CASE;END PROCESS;END;图2-1 计数器和译码器合起来的RTL图图2- 2 计数器和译码器合起来的顶层文件原理图图2-3 计数器和译码器合起来的功能仿真波形图2-4 计时器和译码器连接电路的顶层文件原理图。

EDA实验报告(两位十六进制计数器)

EDA实验报告(两位十六进制计数器)

EDA实验报告(两位十六进制计数器)计算机09-3班郑秀枫 09081311实验二两位十六进制计数器一、实验目的1、继续熟悉Quartus环境2、熟练掌握VHDL语言设计流程3、了解Verilog语言的基本使用4、熟悉DE2开发板上的时钟信号就LED显示器的使用二、实验任务1、完成第三章最后的实例,用7段数码管显示两位16进制数,clk输入用FPGA上的50M信号2、用Verilog HDL实现SW输入4位二进制数,用7段数码管按十进制显示输出同时用LED灯显示三、实验步骤1、用VHDL实现两位16进制计数器(1)新建VHDL源文件,命名为cn4e.vhd,设计实现一位16进制计数器,其代码如图2-1所示。

计算机09-3班郑秀枫 09081311图2-1 图2-2(2)新建VHDL源文件,命名为vhdl2s,设计实现七段数码管译码器,其代码如图2-2所示(3)新建VHDL源文件,命名为fenpin,设计实现分频电路,将输入的50MHz的时钟信号变为1Hz的时钟信号,其代码如图2-3所示图2-3 图2-4(4)新建VHDL源文件,命名为my_pkg,将上三步实现的原件例化到my_pkg程序包中,方便以后使用,其代码如图2-4所示。

(5)新建VHDL源文件,命名为counter16,利用已经例化的三个原件实现两位16进制计数器及输出到七段数码管显示的电路(如图2-5),保存后将其设置为顶层文件,编译查看是否有错误。

图2-5(6)新建波形文件,赋予每个输入端口某种输入信号,保存波形文件,进行功能仿真,观察输出端波形与输入信号关系是否正确。

若不正确,查找问题所在并解决问题;若正确,则进行管脚分配,分配完毕后再编译一次使分配生效,连接DE2开发板到电脑,将文件下载到开发板计算机09-3班郑秀枫 09081311进行验证。

2、用Verilog实现十进制数显示(1)新建Verilog源文件,实现SW输入4位二进制数,用7段数码管按十进制显示输出同时用LED灯显示,代码如图2-6所示图2-6(2)编译成功后,新建波形文件,赋予每个输入端口某种输入信号,保存波形文件,进行功能仿真,观察输出端波形与输入信号关系是否正确。

《EDA技术实用教程(第四版)》(包括第九、十章)习题答案解析

《EDA技术实用教程(第四版)》(包括第九、十章)习题答案解析

《EDA技术实用教程(第四版)》习题1 习题1-1EDA技术与ASIC设计和FPGA开发有什么关系?FPGA在ASIC设计中有什么用途?P3~41-2 与软件描述语言相比,VHDL有什么特点? P6l-3什么是综合?有哪些类型?综合在电子设计自动化中的地位是什么?P51-4 在EDA技术中,自顶向下的设计方法的重要意义是什么? P7~101-5 IP在EDA技术的应用和发展中的意义是什么? P22~141-6叙述EDA的FPGA/CPLD设计流程,以及涉及的EDA工具及其在整个流程中的作用。

(P11~13)2 习题2-1OLMC(输出逻辑宏单元)有何功能?说明GAL是怎样实现可编程组合电路与时序电路的。

P34~362-2什么是基于乘积项的可编程逻辑结构?P33~34,40什么是基于查找表的可编程逻辑结构?P40~412-3FPGA系列器件中的LAB有何作用? P43~452-5 解释编程与配置这两个概念。

P582-6 请参阅相关资料,并回答问题:按本章给出的归类方式,将基于乘积项的可编程逻辑结构的PLD器件归类为CPLD;将基于查找表的可编程逻辑结构的PLD器什归类为FPGA,那么,APEX系列属于什么类型PLD器件? MAX II系列又属于什么类型的PLD器件?为什么? P54~563 习题3-1 画出与以下实体描述对应的原理图符号元件:ENTITY buf3s IS --实体1:三态缓冲器PORT(input:IN STD_LOGIC; --输入端enable:IN STD_LOGIC; --使能端output:OUT STD_LOGIC); --输出端END buf3s ;ENTITY mux21 IS --实体2: 2选1多路选择器PORT(in0, in1,sel: IN STD_LOGIC;output:OUT STD_LOGIC);mux21in0outputin1sel3-2 图3-16所示的是4选1多路选择器,试分别用IF_THEN语句和CASE语句的表达方式写出此电路的VHDL程序,选择控制信号s1和s0的数据类型为STD_LOGIC_VECTOR;当s1=’0’,s0=’0’;s1=’0’,s0=’1’;s1=’1’,s0=’0’和s1=’1’,s0=’1’时,分别执行y<=a、y<=b、y<=c、y<=d。

十六位加减可控计算器

十六位加减可控计算器

实验一
一、实验目的
1、学会使用LPM参数化模块库进行系统设计。

2、学会器件选择及器件的引脚分配
3、了解所选器件的逻辑单元结构
二、实验内容
1、用LPM参数模块化设计方法设计一个16位的加减可控计数器
2、选择合适器件,并进行引脚分配
3、查看器件内部资源使用情况,并对引脚重新进行合理分配
三、实验步骤
1、打开QuartusII,新建一个工程addsub16
3、打开symbol tool,选择megafunctions/arichmetic下的lpm_counter,点击OK
4、修改该宏函数输出的形式及存放目录和名称
5、选择器件,输入数据位数和实现的功能
6选择器件的计数使能
7.选择清零端口
8.可加上输入输出端口
9.选择具体器件
10.进行引脚分配(如果引脚自动分配,可直接进行综合编译)
11.查看器件内部逻辑单元使用情况
12.内部资源调整
13.内部资源调整后重新综合
14.功能仿真达到预期结果。

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

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

EDA技术与应用课后习题答案(2)EDA技术与应用课后习题答案大全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_subberdiff,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设计文件。

EDA与VHDL 实验报告--16位cpu 设计

EDA与VHDL 实验报告--16位cpu 设计

[EDA与VHDL 实验报告][16位CPU设计]0 / 1916位cpu 设计一、顶层系统设计1.1 组成结构CPU的结构如图所示。

这是一个采用单总线系统架构的复杂指令系统结构的16 位CPU 。

处理器包含了各种基本器件模块。

他们是8个16位的寄存器reg0~ reg7、一个运算器ALU、一个移位寄存器Shifter、一个程序计数器PortCnt、一个指令寄存器InstrReg、一个比较器Comp、一个地址寄存器Addreg、和一个控制单元Control。

这些模块公共用一组16 位的三台数据总线。

系统采用自顶向下的方法进行设计。

顶层设计由微处理器和存储器通过一组双向数据总线连接,它们由一组地址总线和一些控制总线组成。

处理器从外存储器中读取指令,并通过执行这些指令来运行程序。

这些指令存储在指令寄存器中,并由控制单元译码。

控制单元使得相应的信号互相作用,并使处理单元执行这些指令。

1.2. 指令系统设计在设计处理器时首先要确定Cpu 具有哪些功能,并针对这些功能采用哪些指令,然后确定指令的格式。

为了使设计的CPU 具有基本的运算功能,指令将设计成以下形式,可以分为如下几类.●装载指令:指令从其他寄存器或存储器装载数据或是立刻赋值。

●存储指令:指令存储寄存器的值写到存储器●分支指令:指令使处理器转到其它地址,一些分支指令为条件转移,另外一些为无条件转移●移位指令:这些指令用移位寄存器单元执行移位操作,实现数据传递1.2.1 指令格式所有的指令都包含五位操作码。

单字节指令在低6位指令中包含两个3 位寄存器,一个是源操作数寄存器,另一个是目的操作数寄存器。

双字节指令中,第一个字节中包含目标寄存器的地址,第二个字节中包含了指令地址或者操作数。

指令格式如下:(1)单字指令(2)双字指令第一个字中包含目标寄存器的地址,第二个字中包含了指令地址或者操作数。

1.2.2 指令操作码1.3. 顶层结构的VHDL 设计CPU 原件的VHDL 描述CPU_LIB.VHDL 用来说明连接各个原件之间的信号类型。

基于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时启动计数有所体现。

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

**大学
本科实验报告
(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 IS
PORT(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 IS
BEGIN
PROCESS(CLK,RST,EN)
VARIABLE CQ_IN:STD_LOGIC_VECTOR(15 DOWNTO 0);
BEGIN
IF RST='1' THEN
CQ_IN:=(OTHERS=>'0');
ELSIF CLK'EVENT AND CLK='1' THEN
IF EN='1' THEN
IF MODE='1' THEN
IF CQ_IN<65535 THEN
CQ_IN:=CQ_IN+1;
COUT<='0';
ELSE CQ_IN:=(OTHERS=>'0'); COUT<='1';
END IF;
ELSIF MODE='0' THEN
IF CQ_IN>0 THEN
CQ_IN:=CQ_IN-1;
COUT<='0';
ELSE
CQ_IN:=(OTHERS=>'1');
COUT<='1';
END IF;
END IF;
END IF;
END IF;
CQ<=CQ_IN;
END PROCESS; END behav;。

相关文档
最新文档