版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
第四章
用VHDL程序實現常用邏輯電路4.1組合邏輯電路設計1基本邏輯門
基本邏輯門電路有與門、或門、非門、與非門、異或門和異或非門等,用VHDL語言來描述十分方便.其源程序如下:
libraryieee;useiee.std_logic_1164.all;entityjbmis
port(a,b:inbit;f1,f2,f3,f4,f5,f:outbit);endjbm;architectureaofjbmisbegin
f1<=aandb;--構成與門
f2<=aorb;--構成或門
f<=nota;--構成非門
f3<=anandb;--構成與非門
f4<=anorb;--構成異或門
f5<=not(a
xorb);--構成異或非門即同門
end;2三態(tài)門源程序如下:
libraryieee;useieee.std_logic_1164.all;entitytri_sis
port(enable:instd_logic;
datain:instd_logic_vector(7downto0);
dataout:outstd_logic_vector(7downto0));endtri_s;architecturebhvoftri_sisbegin
process(enable,datain)beginifenable='1'then
dataout<=datain;else
dataout<="ZZZZZZZZ";endif;endprocess;endbhv;8位三態(tài)控制門電路dataout[7..0]comb[7..0]datain[7..0]enableIO_BUF(TRI)3.三線-八線譯碼器三線-八線譯碼器的輸出有效電平為低電平,譯碼器的使能控制輸入端g1、g2a、g2b有效時,當3線數據輸入端:
cba=000時,y[7…0]=11111110(即y[0]=0);
cba=001時,y[7…0]=11111101(即y[1]=0);
cba=111時,y[7…0]=01111111(即y[7]=0);
三八譯碼器端口圖:
源程序如下:--實體libraryieee;useieee.std_logic_1164.all;entitydecoder3_8isport(a,b,c,g1,g2a,g2b:instd_logic;y:outstd_logic_vector(7downto0));enddecoder3_8;
結構體描述(下頁)architectureaofdecoder3_8issignaldz:std_logic_vector(2downto0);begin
dz<=c&b&a;process(dz,g1,g2a,g2b)beginif(g1='1'andg2a='0'andg2b='0')thencasedziswhen"000"=>y<="11111110";when"001"=>y<="11111101";when"010"=>y<="11111011";when"011"=>y<="11110111";when"100"=>y<="11101111";when"101"=>y<="11011111";when"110"=>y<="10111111";when"111"=>y<="01111111";whenothers=>y<="XXXXXXXX";endcase;elsey<="11111111";endif;endprocess;end;4.七段碼譯碼器七段碼的輸出去驅動七段碼顯示器,才能顯示正常的數字。下圖為共陰極數碼管顯示器。
共陰極數碼管顯示器電路示意圖分別顯示0~9和A、B、C、D、E、F等16個數碼,其源程序如下:
--實體描述libraryieee;useieee.std_logic_1164.allentitydecl7sisport(a:instd_logic_vector(3downto0);led7s:outstd_logic_vector(6downto0));enddecl7s;結構體描述見下頁結構體描述:architecturebehaveofdecl7sisbegin
process(a)begincaseaiswhen"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";whenothers=>null;endcase;endprocess;endbehave;5.多位加(減)法器
以4位全減器為例來說明。程序說明:該例利用行為描述模式描述全減器。兩個數夠減,高借位值為0;兩個數不夠減,需要向高位借1位,這時高借位值為1,由于有借位,所以差值是大于或等于0的數。
--實體描述
libraryieee;useieee.std_logic_1164.all;useieee.std_logic_signed.all;entityjianfaqiis
port(a,b:instd_logic_vector(0to3);c0:instd_logic;c1:outstd_logic;d:outstd_logic_vector(0to3));end;--結構體描述:architectureaofjianfaqiisbeginprocessbeginifa>b+c0thend<=a-(b+c0);c1<='0';elsec1<='1';d<=("10000")-(b+c0-a);endif;endprocess;end;4.2時序邏輯電路設計1觸發(fā)器
觸發(fā)器是構成時序邏輯電路的基本元件,常用的觸發(fā)器包括RS觸發(fā)器、D觸發(fā)器、JK觸發(fā)器、T觸發(fā)器等類型。下面僅介紹同步復位D觸發(fā)器。源程序如下:
libraryieee;useieee.std_logic_1164.all;useieee.std_logic_signed.all;entitysyndffis
port(d,clk,reset:in
std_logic;
q,qb:out
std_logic);endsyndff;--結構體描述:architecturedff_artofsyndffisbegin
process(clk)beginif(clk'eventandclk='1')thenif(reset='0')thenq<='0';
qb<='1';elseq<=d;
qb<=notq;endif;endif;endprocess;enddff_art;
2計數器以n位二進制計數器設計為例。源程序如下:--實體描述
libraryieee;useieee.std_logic_1164.all;useieee.std_logic_unsigned.all;entitycnt4IS port(clk:instd_logic; q:outstd_logic_vector(3downto0)); endcnt4;改變std_logic_vector矢量的位寬,可以很方便地改變二進制計數器的模。--結構體描述:architecturebehaveofcnt4issignalq1:std_logic_vector(3downto0);begin
process(clk)beginif(clk'eventandclk='1')then q1<=q1+1;
endif;endprocess;q<=q1;endbehave;3移位寄存器設計一個帶有并行預置功能的8位右移移位寄存器。端口:
clk是移位時鐘信號;
din是8位并行預置數據端口;
load是并行數據預置使能信號;
qb是串行輸出端口。當clk的上升沿到來時進程被啟動,若load為高電平則將輸入端的8位二進制數并行置入移位寄存器中,作為串行右移輸出的初始值;若load為低電平,則執(zhí)行reg8(6downto0):=reg8(7downto1)。8個脈沖后完成了并-串轉化的功能,并將最低位首先輸出。源程序如下:libraryieee;usestd_logic_1164.all;entityshfrtis--8位右移寄存器
port(clk,load:instd_logic;din:instd_logic_vector(7downto0);
qb:outstd_logic);end;architectureoneofshfrtisbeginprocess(clk,load)variablereg8:std_logic_vector(7downto0);beginifclk'eventandclk='1'then--檢測時鐘上升沿
ifload='1'thenreg8::=din;--由(load='1')裝載新數據
elsereg8(6downto0):=reg8(7downto1);endif;endif;
qb<=reg8(0);--輸出最低位endprocess;endone;4.3狀態(tài)機邏輯電路設計
狀態(tài)機設計是一類重要的時序電路,是許多邏輯電路的核心部件。是實現高效率、高可靠性邏輯控制的重要途徑。一般狀態(tài)機分類為以下兩種:
MOORE型狀態(tài)機,它的輸出僅僅取決于現態(tài),與輸入無關。
MEALY型狀態(tài)機,它的輸出不僅取決于現態(tài),還與輸入有關。
狀態(tài)機程序結構主要由四部分組成:
1)說明部分:定義枚舉型數據類型:Typestateis(s1,s2,s3,….);定義現態(tài)和次態(tài)信號:current_state和next_state。
2)主控時序進程:在時鐘驅動下負責狀態(tài)轉換。只是機械地將代表次態(tài)的信號next_state中的內容送入現態(tài)的信號current_state中。
3)主控組合進程:根據外部輸入的控制信號和當前狀態(tài)確定下一狀態(tài)的取向,以及確定當前對外的輸出。
4)輔助進程:為了完成某種算法或為了輸出設置的鎖存器。狀態(tài)機應用舉例:
設計一個循環(huán)彩燈控制器,該控制器控制紅、綠、黃三個發(fā)光管循環(huán)發(fā)亮(紅發(fā)光管亮2秒,綠發(fā)光管亮3秒,黃發(fā)光管亮1秒)。
其源程序如下:
--實體描述:
libraryieee;useieee.std_logic_1164.all;entityasm_ledis
port(clk,clr:instd_logic;led1,led2,led3:outstd_logic);end;
結構體描述見下頁:architectureaofasm_ledistypestatesis(s0,s1,s2,s3,s4,s5); --對狀態(tài)機的狀態(tài)聲明
signalq:std_logic_vector(0to2);signalstate:states;beginp1:process(clk,clr)--進程1begin
if(clr='0')thenstate<=s0;
elsif(clk'eventandclk='1')thencasestateiswhens0=>state<=s1;whens1=>state<=s2;whens2=>state<=s3;whens3=>state<=s4;whens4=>s
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 廣東科技學院《無人機航測與規(guī)劃制圖》2023-2024學年第一學期期末試卷
- 廣東江門幼兒師范高等??茖W?!痘粞莩c欣賞》2023-2024學年第一學期期末試卷
- 廣東機電職業(yè)技術學院《合唱指揮二》2023-2024學年第一學期期末試卷
- 廣東工業(yè)大學《社區(qū)發(fā)展與社會治理》2023-2024學年第一學期期末試卷
- 廣東第二師范學院《法語語音》2023-2024學年第一學期期末試卷
- 廣東白云學院《影視編導基礎》2023-2024學年第一學期期末試卷
- 贛州職業(yè)技術學院《工程安全與環(huán)境保護》2023-2024學年第一學期期末試卷
- 憲法課件培訓內容
- 贛西科技職業(yè)學院《經濟效益審計》2023-2024學年第一學期期末試卷
- 贛東學院《中外經典戲劇與文學》2023-2024學年第一學期期末試卷
- 初中物理期末復習+專題5+綜合能力題+課件++人教版物理九年級全一冊
- 2024年國開電大 統(tǒng)計學原理 形成性考核冊答案
- 幼兒園大班語言課件:不怕冷的大衣
- 2024年1月國開電大法律事務??啤镀髽I(yè)法務》期末考試試題及答案
- 2024全國能源行業(yè)火力發(fā)電集控值班員理論知識技能競賽題庫(多選題)
- 因式分解(分組分解法)專項練習100題及答案
- 冶煉煙氣制酸工藝設計規(guī)范
- 《上帝擲骰子嗎:量子物理史話》超星爾雅學習通章節(jié)測試答案
- Unit13 同步教學設計2023-2024學年人教版九年級英語全冊
- 2023-2024學年河北省保定市滿城區(qū)八年級(上)期末英語試卷
- 2024成都中考數學第一輪專題復習之專題四 幾何動態(tài)探究題 教學課件
評論
0/150
提交評論