實驗7 全加器與計算器_第1頁
實驗7 全加器與計算器_第2頁
實驗7 全加器與計算器_第3頁
實驗7 全加器與計算器_第4頁
實驗7 全加器與計算器_第5頁
已閱讀5頁,還剩18頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

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. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論