实验7 全加器与计算器_第1页
实验7 全加器与计算器_第2页
实验7 全加器与计算器_第3页
实验7 全加器与计算器_第4页
实验7 全加器与计算器_第5页
已阅读5页,还剩18页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

KX康芯科技图4-10半加器h_adder电路图及其真值表

4.3.1半加器描述

4.31位二进制全加器的VHDL描述

KX康芯科技图4-11全加器f_adder电路图及其实体模块

4.3.1半加器描述

4.31位二进制全加器的VHDL描述

KX康芯科技4.3.1半加器描述

4.31位二进制全加器的VHDL描述

【例4-16】LIBRARYIEEE;--半加器描述(1):布尔方程描述方法USEIEEE.STD_LOGIC_1164.ALL;ENTITYh_adderISPORT(a,b:INSTD_LOGIC;co,so:OUTSTD_LOGIC);ENDENTITYh_adder;ARCHITECTUREfh1OFh_adderisBEGINso<=NOT(aXOR(NOTb));co<=aANDb;ENDARCHITECTUREfh1;KX康芯科技【例4-17】LIBRARYIEEE;--半加器描述(2):真值表描述方法USEIEEE.STD_LOGIC_1164.ALL;ENTITYh_adderISPORT(a,b:INSTD_LOGIC;co,so:OUTSTD_LOGIC);ENDENTITYh_adder;ARCHITECTUREfh1OFh_adderisSIGNALabc:STD_LOGIC_VECTOR(1DOWNTO0);--定义标准逻辑位矢量数据类型BEGINabc<=a&b;--a相并b,即a与b并置操作PROCESS(abc)BEGINCASEabcIS--类似于真值表的CASE语句WHEN"00"=>so<='0';co<='0';WHEN"01"=>so<='1';co<='0';WHEN"10"=>so<='1';co<='0';WHEN"11"=>so<='0';co<='1';WHENOTHERS=>NULL;ENDCASE;ENDPROCESS;ENDARCHITECTUREfh1;KX康芯科技4.3.1半加器描述

4.31位二进制全加器的VHDL描述

【例4-18】LIBRARYIEEE;--或门逻辑描述USEIEEE.STD_LOGIC_1164.ALL;ENTITYor2aISPORT(a,b:INSTD_LOGIC;c:OUTSTD_LOGIC);ENDENTITYor2a;ARCHITECTUREoneOFor2aISBEGINc<=aORb;

ENDARCHITECTUREone;KX康芯科技【例4-19】LIBRARYIEEE;--1位二进制全加器顶层设计描述USEIEEE.STD_LOGIC_1164.ALL;ENTITYf_adderISPORT(ain,bin,cin:INSTD_LOGIC;cout,sum:OUTSTD_LOGIC);ENDENTITYf_adder;ARCHITECTUREfd1OFf_adderISCOMPONENTh_adder--调用半加器声明语句PORT(a,b:INSTD_LOGIC;co,so:OUTSTD_LOGIC);ENDCOMPONENT;COMPONENTor2aPORT(a,b:INSTD_LOGIC;c:OUTSTD_LOGIC);ENDCOMPONENT;SIGNALd,e,f:STD_LOGIC;--定义3个信号作为内部的连接线。BEGINu1:h_adderPORTMAP(a=>ain,b=>bin,co=>d,so=>e);--例化语句u2:h_adderPORTMAP(a=>e,b=>cin,co=>f,so=>sum);u3:or2aPORTMAP(a=>d,b=>f,c=>cout);

ENDARCHITECTUREfd1;KX康芯科技4.3.2CASE语句

4.31位二进制全加器的VHDL描述

1.CASE语句CASE<表达式>ISWhen<选择值或标识符>=><顺序语句>;...;<顺序语句>;When<选择值或标识符>=><顺序语句>;...;<顺序语句>;...WHENOTHERS=><顺序语句>;ENDCASE;

KX康芯科技4.3.2CASE语句

4.31位二进制全加器的VHDL描述

2.标准逻辑矢量数据类型STD_LOGIC_VECTOR

STD_LOGIC

在使用STD_LOGIC_VECTOR中,必须注明其数组宽度,即位宽,如:B:OUTSTD_LOGIC_VECTOR(7DOWNTO0);

或SIGNALA:STD_LOGIC_VECTOR(1TO4)

B<="01100010";--B(7)为'0'B(4DOWNTO1)<="1101";--B(4)为'1'B(7DOWNTO4)<=A;--B(6)等于A(2)

KX康芯科技4.3.2CASE语句

4.31位二进制全加器的VHDL描述

3.并置操作符

SIGNALa:STD_LOGIC_VECTOR(3DOWNTO0);SIGNALd:STD_LOGIC_VECTOR(1DOWNTO0);...a<='1''0'd(1)'1';--元素与元素并置,并置后的数组长度为4...IFad="101011"THEN...–-在IF条件句中可以使用并置符

KX康芯科技4.3.3全加器描述和例化语句

4.31位二进制全加器的VHDL描述

COMPONENT元件名ISPORT(端口名表);ENDCOMPONENT文件名;COMPONENTh_adderPORT(c,d:INSTD_LOGIC;e,f:OUTSTD_LOGIC);例化名:元件名PORTMAP([端口名=>]连接端口名,...);KX康芯科技4.4计数器设计

【例4-20】ENTITYCNT4ISPORT(CLK:INBIT;Q:BUFFERINTEGERRANGE15DOWNTO0);END;ARCHITECTUREbhvOFCNT4ISBEGINPROCESS(CLK)BEGINIFCLK'EVENTANDCLK='1'THENQ<=Q+1;ENDIF;ENDPROCESS;ENDbhv;

KX康芯科技4.4计数器设计

4.4.14位二进制加法计数器设计

表式Q<=Q+1的右项与左项并非处于相同的时刻内,对于时序电路,除了传输延时外,前者的结果出现于当前时钟周期;后者,即左项要获得当前的Q+1,需等待下一个时钟周期。表面上,BUFFER具有双向端口INOUT的功能,但实际上其输入功能是不完整的,它只能将自己输出的信号再反馈回来,并不含有IN的功能。注意KX康芯科技4.4计数器设计

4.4.2整数类型

Q:BUFFERINTEGERRANGE15DOWNTO0;1 十进制整数0 十进制整数35十进制整数10E3 十进制整数,等于十进制整数100016#D9# 十六进制整数,等于十六进制整数D9H8#720# 八进制整数,等于八进制整数720O2#11010010# 二进制整数,等于二进制整数11010010B整数常量的书写方式示例Q:BUFFERNATURALRANGE15DOWNTO0;

KX康芯科技4.4.3计数器设计的其他表述方法

【例4-21】

LIBRARYIEEE;USEIEEE.STD_LOGIC_1164.ALL;USEIEEE.STD_LOGIC_UNSIGNED.ALL;ENTITYCNT4ISPORT(CLK:INSTD_LOGIC;Q:OUTSTD_LOGIC_VECTOR(3DOWNTO0));END;ARCHITECTUREbhvOFCNT4ISSIGNALQ1:STD_LOGIC_VECTOR(3DOWNTO0);BEGINPROCESS(CLK)BEGINIFCLK'EVENTANDCLK='1'THENQ1<=Q1+1;ENDIF;ENDPROCESS;Q<=Q1;ENDbhv;KX康芯科技4.4计数器设计

4.4.3计数器设计的其他表述方法

图4-124位加法计数器RTL电路(Synplify综合)

KX康芯科技4.4计数器设计

4.4.3计数器设计的其他表述方法

图4-134位加法计数器工作时序

KX康芯科技4.5一般加法计数器设计

【例4-22】LIBRARYIEEE;USEIEEE.STD_LOGIC_1164.ALL;USEIEEE.STD_LOGIC_UNSIGNED.ALL;ENTITYCNT10ISPORT(CLK,RST,EN:INSTD_LOGIC;CQ:OUTSTD_LOGIC_VECTOR(3DOWNTO0);COUT:OUTSTD_LOGIC);ENDCNT10;ARCHITECTUREbehavOFCNT10ISBEGINPROCESS(CLK,RST,EN)VARIABLECQI:STD_LOGIC_VECTOR(3DOWNTO0);BEGINIFRST=‘1’THENCQI:=(OTHERS=>‘0’);--计数器异步复位

ELSIFCLK‘EVENTANDCLK=’1‘THEN--检测时钟上升沿

接下页

KX康芯科技4.5一般加法计数器设计

IFEN='1'THEN-检测是否允许计数(同步使能)IFCQI<9THENCQI:=CQI+1;--允许计数,

检测是否小于9

ELSECQI:=(OTHERS=>‘0’);--大于9,计数值清零

ENDIF;ENDIF;ENDIF;IFCQI=9THENCOUT<='1';--计数大于9,输出进位信号ELSECOUT<='0';ENDIF;CQ<=CQI;--将计数值向端口输出ENDPROCESS;ENDbehav;

KX康芯科技4.5一般加法计数器设计

4.5.1相关语法说明

1.变量

VARIABLECQI:STD_LOGIC_VECTOR(3DOWNTO0)

2.省略赋值操作符(OTHERS=>X)SIGNALd1:STD_LOGIC_VECTOR(4DOWNTO0);VARIABLEa1:STD_LOGIC_VECTOR(15DOWNTO0);...d1<=(OTHERS=>'0');a1:=(OTHERS=>'0');

d1<=(1=>e(3),3=>e(5),OTHERS=>e(1));

f<=e(1)&e(5)&e(1)&e(3)&e(1);

KX康芯科技4.5一般加法计数器设计

4.5.2程序分析

图4-14例4-22的RTL电路(Synplify综合)

KX康芯科技4.5一般加法计数器设计

4.5.2程序分析

图4-15例4-22的工作时序

KX康芯科技4.5.3

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论