第4章 用VHDL程序?qū)崿F(xiàn)常用邏輯電路_第1頁
第4章 用VHDL程序?qū)崿F(xiàn)常用邏輯電路_第2頁
第4章 用VHDL程序?qū)崿F(xiàn)常用邏輯電路_第3頁
第4章 用VHDL程序?qū)崿F(xiàn)常用邏輯電路_第4頁
第4章 用VHDL程序?qū)崿F(xiàn)常用邏輯電路_第5頁
已閱讀5頁,還剩18頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

第四章

用VHDL程序?qū)崿F(xiàn)常用邏輯電路4.1組合邏輯電路設(shè)計1基本邏輯門

基本邏輯門電路有與門、或門、非門、與非門、異或門和異或非門等,用VHDL語言來描述十分方便.其源程序如下:

libraryieee;useiee.std_logic_1164.all;entityjbmis

port(a,b:inbit;f1,f2,f3,f4,f5,f:outbit);endjbm;architectureaofjbmisbegin

f1<=aandb;--構(gòu)成與門

f2<=aorb;--構(gòu)成或門

f<=nota;--構(gòu)成非門

f3<=anandb;--構(gòu)成與非門

f4<=anorb;--構(gòu)成異或門

f5<=not(a

xorb);--構(gòu)成異或非門即同門

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有效時,當(dāng)3線數(shù)據(jù)輸入端:

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;

結(jié)構(gòu)體描述(下頁)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.七段碼譯碼器七段碼的輸出去驅(qū)動七段碼顯示器,才能顯示正常的數(shù)字。下圖為共陰極數(shù)碼管顯示器。

共陰極數(shù)碼管顯示器電路示意圖分別顯示0~9和A、B、C、D、E、F等16個數(shù)碼,其源程序如下:

--實體描述libraryieee;useieee.std_logic_1164.allentitydecl7sisport(a:instd_logic_vector(3downto0);led7s:outstd_logic_vector(6downto0));enddecl7s;結(jié)構(gòu)體描述見下頁結(jié)構(gòu)體描述: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位全減器為例來說明。程序說明:該例利用行為描述模式描述全減器。兩個數(shù)夠減,高借位值為0;兩個數(shù)不夠減,需要向高位借1位,這時高借位值為1,由于有借位,所以差值是大于或等于0的數(shù)。

--實體描述

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;--結(jié)構(gòu)體描述:architectureaofjianfaqiisbeginprocessbeginifa>b+c0thend<=a-(b+c0);c1<='0';elsec1<='1';d<=("10000")-(b+c0-a);endif;endprocess;end;4.2時序邏輯電路設(shè)計1觸發(fā)器

觸發(fā)器是構(gòu)成時序邏輯電路的基本元件,常用的觸發(fā)器包括RS觸發(fā)器、D觸發(fā)器、JK觸發(fā)器、T觸發(fā)器等類型。下面僅介紹同步復(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;--結(jié)構(gòu)體描述: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計數(shù)器以n位二進(jìn)制計數(shù)器設(shè)計為例。源程序如下:--實體描述

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矢量的位寬,可以很方便地改變二進(jìn)制計數(shù)器的模。--結(jié)構(gòu)體描述:architecturebehaveofcnt4issignalq1:std_logic_vector(3downto0);begin

process(clk)beginif(clk'eventandclk='1')then q1<=q1+1;

endif;endprocess;q<=q1;endbehave;3移位寄存器設(shè)計一個帶有并行預(yù)置功能的8位右移移位寄存器。端口:

clk是移位時鐘信號;

din是8位并行預(yù)置數(shù)據(jù)端口;

load是并行數(shù)據(jù)預(yù)置使能信號;

qb是串行輸出端口。當(dāng)clk的上升沿到來時進(jìn)程被啟動,若load為高電平則將輸入端的8位二進(jìn)制數(shù)并行置入移位寄存器中,作為串行右移輸出的初始值;若load為低電平,則執(zhí)行reg8(6downto0):=reg8(7downto1)。8個脈沖后完成了并-串轉(zhuǎn)化的功能,并將最低位首先輸出。源程序如下: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')裝載新數(shù)據(jù)

elsereg8(6downto0):=reg8(7downto1);endif;endif;

qb<=reg8(0);--輸出最低位endprocess;endone;4.3狀態(tài)機(jī)邏輯電路設(shè)計

狀態(tài)機(jī)設(shè)計是一類重要的時序電路,是許多邏輯電路的核心部件。是實現(xiàn)高效率、高可靠性邏輯控制的重要途徑。一般狀態(tài)機(jī)分類為以下兩種:

MOORE型狀態(tài)機(jī),它的輸出僅僅取決于現(xiàn)態(tài),與輸入無關(guān)。

MEALY型狀態(tài)機(jī),它的輸出不僅取決于現(xiàn)態(tài),還與輸入有關(guān)。

狀態(tài)機(jī)程序結(jié)構(gòu)主要由四部分組成:

1)說明部分:定義枚舉型數(shù)據(jù)類型:Typestateis(s1,s2,s3,….);定義現(xiàn)態(tài)和次態(tài)信號:current_state和next_state。

2)主控時序進(jìn)程:在時鐘驅(qū)動下負(fù)責(zé)狀態(tài)轉(zhuǎn)換。只是機(jī)械地將代表次態(tài)的信號next_state中的內(nèi)容送入現(xiàn)態(tài)的信號current_state中。

3)主控組合進(jìn)程:根據(jù)外部輸入的控制信號和當(dāng)前狀態(tài)確定下一狀態(tài)的取向,以及確定當(dāng)前對外的輸出。

4)輔助進(jìn)程:為了完成某種算法或為了輸出設(shè)置的鎖存器。狀態(tài)機(jī)應(yīng)用舉例:

設(shè)計一個循環(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;

結(jié)構(gòu)體描述見下頁:architectureaofasm_ledistypestatesis(s0,s1,s2,s3,s4,s5); --對狀態(tài)機(jī)的狀態(tài)聲明

signalq:std_logic_vector(0to2);signalstate:states;beginp1:process(clk,clr)--進(jìn)程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)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論