第7章 CPLDFPGA設(shè)計(jì)實(shí)踐--(1)_第1頁
第7章 CPLDFPGA設(shè)計(jì)實(shí)踐--(1)_第2頁
第7章 CPLDFPGA設(shè)計(jì)實(shí)踐--(1)_第3頁
第7章 CPLDFPGA設(shè)計(jì)實(shí)踐--(1)_第4頁
第7章 CPLDFPGA設(shè)計(jì)實(shí)踐--(1)_第5頁
已閱讀5頁,還剩55頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、第7章 CPLDFPGA設(shè)計(jì)(shj)實(shí)踐(1) 7.1 基本組合邏輯建模 7.2 基本時(shí)序(sh x)邏輯建模 7.3 常用算法的實(shí)現(xiàn)7.4 狀態(tài)機(jī)設(shè)計(jì)共六十頁 常用的組合單元電路主要有譯碼器、 編碼器、 數(shù)據(jù)選擇器、 減法器、 加法器等, 前面我們(w men)已經(jīng)舉過許多例子, 這里再做一些補(bǔ)充和總結(jié)。7.1 基本組合(zh)邏輯建模 共六十頁基本(jbn)門電路VHDL描述 基本門電路用VHDL語言來描述(mio sh)十分方便。為方便起見,在下面的兩輸入模塊中,使用VHDL中定義的邏輯運(yùn)算符,同時(shí)實(shí)現(xiàn)一個(gè)與門、或門、與非門、或非門、異或門及反相器的邏輯。 共六十頁1、模型布爾代數(shù)模型

2、 VHDL描述 b= not a2、程序設(shè)計(jì)首先確定(qudng)實(shí)體(一個(gè)輸入信號(hào),一個(gè)輸出信號(hào))然后確定結(jié)構(gòu)體由于簡單可直接寫出VHDL文件例7.1 “非”門電路設(shè)計(jì)共六十頁非門電路建模LIBRARY ieee;use ieee.std_logic_1164.all;entity nota isport(a: in std_logic; b: out std_logic);end;architecture behv of nota is begin b=not a;end;共六十頁3、仿真驗(yàn)證步驟:綜合編譯源文件波形(b xn)驗(yàn)證分析功能的正確性 同樣的方法可以(ky)將基本門電路的建模

3、做好與門、與非門、或非門、與或非門、異或門共六十頁LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY GATE ISPORT (A,B : IN STD_LOGIC; YAND,YOR :OUT STD_LOGIC; YNAND,YNOR :OUT STD_LOGIC ; YNOT,YXOR :OUT STD_LOGIC); END ENTITY GATE;【例7.2】基本(jbn)門電路描述共六十頁ARCHITECTURE ART OF GATE IS BEGIN YAND=A AND B; -與門輸出(shch) YOR=A OR B; -或門輸

4、出 YNAND=A NAND B;-與非門輸出 YNOR=A NOR B; -或非門輸出 YNOT=A NOT B; -反相器輸出 YXOR=A XOR B; -異或門輸出 END ARCHITECTURE ART;共六十頁例7.3 半加器的建模1、建模2、程序設(shè)計(jì)(chn x sh j).So=a xor b;Co=a and b;3、波形仿真共六十頁architecture behv of h_adder is begin so=a xor b; coy,co=x); u2: h_adder port map(cin,y,so=so,co=z); co=x or z;end;LIBRARY

5、 ieee;use ieee.std_logic_1164.all;entity f_adder isport(cin,a,b:in std_logic; so,co:out std_logic);end;共六十頁下面(xi mian)我們分別以四種方法描述一個(gè)3-8線譯碼器。LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY DECODER ISPORT(INP:IN STD_LOGIC_VECTOR(2 DOWNTO 0); OUTP:OUT STD_LOGIC_VECTOR (7

6、DOWNTO 0);END ENTITY DECODER;例7.5 3-8線譯碼器共六十頁方法1:使用(shyng)SLL邏輯運(yùn)算符ARCHITECTURE ART1 OF DECODER IS BEGIN OUTP0); S(CONV_INTEGER(INP):=1; OUTP=S; END PROCESS; END ARCHITECTURE ART2;共六十頁方法3:使用(shyng)WHENELSE語句 ARCHITECTURE ART3 OF DECODER IS BEGIN OUTP(0)=1 WHEN INP=000 ELSE 0; OUTP(1)=1 WHEN INP=001 E

7、LSE 0; OUTP(2)=1 WHEN INP=“010” ELSE “0”; OUTP(3)=1 WHEN INP=011 ELSE 0; OUTP(4)=1 WHEN INP=100 ELSE 0; OUTP(5)=1 WHEN INP=101 ELSE 0; OUTP(6)=1 WHEN INP=110 ELSE 0; OUTP(7)OUTPOUTPOUTPOUTPOUTPOUTPOUTPOUTPOUTP= XXXXXXXX; END CASE; END PROCESS;END ARCHITECTURE ART4;共六十頁下面我們(w men)用三種方法設(shè)計(jì)8-3線優(yōu)先編碼器。 8-

8、3線優(yōu)先編碼器,輸入信號(hào)為A、B、C、D、E、F、G和H,輸出信號(hào)為OUT0、OUT1和OUT2。輸入信號(hào)中A的優(yōu)先級(jí)別最低,依次類推,H的優(yōu)先級(jí)別最高。例7.68-3線優(yōu)先(yuxin)編碼器共六十頁LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY ENCODER ISPORT (A,B,C,D:IN STD_LOGIC; E,F(xiàn),G,H:IN STD_LOGIC; OUT0,OUT1,OUT2:OUT STD_LOGIC);END ENTITY ENCODER;共六十頁方法1:使用(shyng)條件賦值語句ARCHITECTURE ART1 O

9、F ENCODER IS SIGNAL OUTS:STD_LOGIC_VECTOR(2 DOWNTO 0); BEGIN OUTS (2 DOWNTO 0)= 111 WHEN H=1 ELSE 110 WHEN G=1 ELSE 101 WHEN F=1 ELSE 100 WHEN E=1 ELSE 011 WHEN D=1 ELSE 010 WHEN C=1 ELSE 001 WHEN B=1 ELSE 000 WHEN A=1 ELSE “XXX”; OUT0=OUTS(0); OUT1=OUTS(1); OUT2=0 AND INPUTS(I)/=1 LOOP -此處的“/=”表示不等

10、于 I:=I-1; END LOOP; (OUT2,OUT1,OUT0)=CONV_STD_LOGIC_VECTOR(I,3); END PROCESS;END ARCHITECTURE ART2;共六十頁方法(fngf)3:使用IF語句LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY ENCODER IS PORT(IN1:IN STD_LOGIC_VECTOR(7 DOWNTO 0); OUT1:OUT STD_LOGIC_VECTOR(2 DOWNTO 0);END ENTITY ENCODER;共六十頁ARCHITECTURE ART3 O

11、F ENCODER ISBEGIN PROCESS(INT1) ISBEGIN IF IN1(7)=1 THEN OUT1=111;ELSIF IN1(6)=1 THEN OUT1=110;ELSIF IN1(5)=1 THEN OUT1=101;ELSIF IN1(4)=1 THEN OUT1=100;ELSIF IN1(3)=1 THEN OUT1=“011”;ELSIF IN1(2)=1 THEN OUT1=010;ELSIF IN1(1)=1 THEN OUT1=001;ELSIF IN1(0)=1 THEN OUT1=000;ELSE OUT1=XXX;END IF ;END PRO

12、CESS;END ARCHITECTURE ART3;共六十頁 比較器可以比較兩個(gè)二進(jìn)制是否相等,下面是一個(gè)8位比較器的VHDL描述(mio sh)。有兩個(gè)8位二進(jìn)制數(shù),分別是A和B,輸出為EQ,當(dāng)A=B時(shí),EQ=1,否則EQ=0。例7.78位比較(bjio)器 共六十頁LIBRARY IEEE;USE IEEE.STD_LOGIC_VECTOR(7 DOWNTO 0);ENTITY COMPARE IS PORT (A,B:IN STD_LOGIC_VECTOR(7 DOWNTO 0); EQ:OUT STD_LOGIC);END ENTITY COMPARE;ARCHITECTURE AR

13、T OF COMPARE IS BEGIN EQ =1 WHEN A=B ELSE 0;END ARCHITECTURE ART;共六十頁 選擇器常用于信號(hào)(xnho)的切換,四選一選擇器可以用于四路信號(hào)(xnho)的切換。四選一選擇器有四個(gè)信號(hào)(xnho)輸入端INP(0)INP(3),兩個(gè)信號(hào)(xnho)選擇端A和B和一個(gè)信號(hào)(xnho)輸出端Y。當(dāng)A、B輸入不同的選擇信號(hào)(xnho)時(shí),就可以使INP(0)INP(3)中某個(gè)相應(yīng)的輸入信號(hào)(xnho)與輸出端Y接通。 例7.8四選一選擇器共六十頁LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY

14、 MUX41 ISPORT ( INP:IN STD_LOGIC_VECTOR(3 DOWNTO 0); A,B:IN STD_LOGIC; Y :OUT STD_LOGIC);END ENTITY MUX41;ARCHITECTURE ART OF MUX41 IS SIGNAL SEL :STD_LOGIC_VECTOR(1 DOWNTO 0); BEGIN 共六十頁SEL=B&A;PROCESS(INP,SEL) IS BEGIN IF (SEL=00)THEN Y=INP(0); ELSIF (SEL=01)THEN Y=INP(1); ELSIF (SEL=11)THEN Y=INP

15、(2); ELSE Y=INP(3); END IF; END PROCESS;END ARCHITECTURE ART;共六十頁下面(xi mian)的程序?qū)斎氩僮鲾?shù)A、B作加、減、乘、除運(yùn)算。LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_ARITH.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY ARITHMETIC ISPORT (A,B: IN STD_LOGIC_VECTOR(3 DOWNTO 0); Q1:OUT STD_LOGIC_VECTOR(4 DOWNTO 0)

16、; Q2,Q3:OUT STD_LOGIC_VECTOR(3 DOWNTO 0); Q4:OUT STD_LOGIC_VECTOR(7 DOWNTO 0); END ENTITY ARITHMETIC;例7.9算術(shù)(sunsh)運(yùn)算共六十頁ARCHITECTURE ART OF ARITHMETIC ISBEGIN PROCESS(A,B) ISBEGIN Q1=(0&A)+(0&B); -ADDITION Q2=A-B; -SUBTRACTION Q3=A/B; -DIVISION Q4=A*B; -MULTIPLICATIONEND PROCESS;END ARCHITECTURE ART

17、;共六十頁三態(tài)門和總線緩沖器是驅(qū)動(dòng)電路(dinl)經(jīng)常用到的器件。1) 三態(tài)門電路LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY TRISTATE IS PORT (EN,DIN :IN STD_LOGIC; DOUT :OUT STD_LOGIC);END ENTITY TRISTATE;例7.10三態(tài)門及總線(zn xin)緩沖器共六十頁ARCHITECTURE ART OF TRISTATE IS BEGIN PROCESS(EN,DIN) IS BEGIN IF EN=1 THEN DOUT=DIN; ELSE DOUT=Z; END I

18、F ; END PROCESS;END ARCHITECTURE ART;共六十頁 2) 單向總線驅(qū)動(dòng)器 在微型計(jì)算機(jī)的總線驅(qū)動(dòng)中經(jīng)常要用單向總線緩沖器,它通常由多個(gè)三態(tài)門組成(z chn),用來驅(qū)動(dòng)地址總線和控制總線。一個(gè)8位的單向總線緩沖器如下圖所示。共六十頁LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY TRI_BUF8 IS PORT ( DIN:IN STD_LOGIC_VECTOR(7 DOWNTO 0); EN:IN STD_LOGIC;DOUT:OUT STD_LOGIC_VECTOR(7 DOWNTO 0);END ENTITY

19、 TRI_BUF8;共六十頁ARCHITECTURE ART OF TRI_BUF8 IS BEGIN PROCESS(EN,DIN) BEGIN IF(EN=1)THEN DOUT=DIN; ELSE DOUT=ZZZZZZZZ; END IF; END PROCESS;END ARCHITECTURE ART;共六十頁3) 雙向總線緩沖器 雙向總線緩沖器用于數(shù)據(jù)(shj)總線的驅(qū)動(dòng)和緩沖,典型的雙向總線緩沖器如下圖所示。圖中的雙向總線緩沖器有兩個(gè)數(shù)據(jù)(shj)輸入/輸出端A和B,一個(gè)方向控制端DIR和一個(gè)選通端EN。EN=0時(shí)雙向緩沖器選通。若DIR=0,則A=B,反之則B=A。共六十頁L

20、IBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY BIDIR ISPORT(A,B:INOUT STD_LOGIC_VECTOR(7 DOWNTO 0); EN,DIR:IN STD_STD_LOGIC);END ENTITY BIDIR;共六十頁ARCHITECTURE ART OF BIDIR ISSIGNAL AOUT,BOUT: STD_LOGIC_VECTOR(7 DOWNTO 0); BEGINPROCESS(A,EN,DIR) -A為輸入(shr) BEGIN IF(EN=0)AND (DIR=1)THEN BOUT=A; ELSE B

21、OUT=ZZZZZZZZ; END IF ; B=BOUT; -B為輸出END PROCESS;共六十頁P(yáng)ROCESS(B,EN,DIR) IS -B為輸入(shr) BEGIN IF(EN=0)AND (DIR=0)THEN AOUT=B; ELSE AOUT=ZZZZZZZZ; END IF ; A=AOUT; -A為輸出 END PROCESS;END ARCHITECTURE ART;共六十頁 本節(jié)的時(shí)序電路設(shè)計(jì)主要有觸發(fā)器、寄存器、計(jì)數(shù)器序列(xli)信號(hào)發(fā)生器和序列(xli)信號(hào)檢測(cè)器等的設(shè)計(jì)實(shí)例。7.2 基本時(shí)序(sh x)邏輯建模共六十頁1、模型布爾代數(shù)模型 2、程序設(shè)計(jì)首先確

22、定實(shí)體然后確定結(jié)構(gòu)體由于簡單可直接(zhji)寫出VHDL文件例7.11 基本(jbn)D觸發(fā)器電路共六十頁LIBRARY IEEE;USE IEEE.std_logic_1164.all;Entity DFF2 isport (clk, d : in std_logic; q : out std_logic);end DFF2;architecture body of DFF2 isbeginprocess (clk,d)begin if CLKEVENT AND CLK=1 then q = d; end if;end process;end body;LIBRARY IEEE;USE I

23、EEE.std_logic_1164.all;Entity DFF1 isport (clk, d : in std_logic; q : out std_logic);end DFF1;architecture body of DFF1 isbeginprocess (clk,d) begin if rising_edge(clk) then q = d; end if;end process;end body;共六十頁例7.12 T觸發(fā)器1、模型(mxng)布爾代數(shù)模型 LIBRARY IEEE;USE IEEE.std_logic_1164.all;Entity TFFa isport

24、(clk,T: in STD_LOGIC; q: buffer STD_LOGIC);end;architecture bodya of TFFa isbeginprocess (clk,T)begin if CLKEVENT AND CLK=1 then if t=1 then q =not q; else q=q; end if; end if;end process;end;q=t xor q;共六十頁例7.13 JK觸發(fā)器狀態(tài)方程LIBRARY IEEE;USE IEEE.std_logic_1164.all;Entity JKa isport (clk, J,K: in STD_LO

25、GIC;q: buffer STD_LOGIC);end;architecture bodya of JKa isbeginprocess (clk,J,K)begin if clkevent and clk=1 thenq =(J and (not q) or (not K) and q); end if;end process;end;共六十頁LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY RSF IS PORT(R,S,CLK:IN STD_LOGIC; Q:BUFFER STD_LOGIC);END ENTITY RSF; 【例7.14】

26、 RS觸發(fā)器共六十頁ARCHITECTURE ART OF RSCFQ IS SIGNAL Q_S:STD_LOGIC; BEGIN PROCESS(CLK,R,S) IS BEGIN IF (CLKEVENT AND CLK=1)THEN IF(S=1 AND R=0) THEN Q_S=1; ELSIF (S=0 AND R=1) THEN Q_S=0; ELSIF (S=0 AND R=0) THEN Q_S=Q_S; END IF; END IF ; Q=Q_S; END PROCESS;END ARCHITECTURE ART ;共六十頁 時(shí)序電路的初始狀態(tài)一般由復(fù)位/置位信號(hào)來設(shè)置

27、, 有同步復(fù)位/置位和異步復(fù)位/置位兩種工作方式。 所謂同步復(fù)位/置位, 就是在復(fù)位/置位信號(hào)有效(yuxio)且給定的時(shí)鐘邊沿到來時(shí), 時(shí)序電路才被復(fù)位/置位; 而異步復(fù)位/置位則與時(shí)鐘無關(guān), 一旦復(fù)位/置位信號(hào)有效(yuxio), 時(shí)序電路就被復(fù)位/置位。 觸發(fā)器的同步(tngb)和非同步(tngb)復(fù)位共六十頁 在用VHDL語言描述時(shí), 同步復(fù)位/置位一定在以時(shí)鐘為敏感信號(hào)的進(jìn)程中定義, 且用IF等條件語句來描述必要的復(fù)位/置位條件。 其典型格式(g shi)為: PROCESS (時(shí)鐘信號(hào)名) BEGIN IF 時(shí)鐘邊沿表達(dá)式 AND 復(fù)位/置位條件表達(dá)式 THEN 復(fù)位/置位語句;

28、ELSE 正常執(zhí)行語句; END IF; END PROCESS; 1) 同步復(fù)位(f wi)/置位的描述共六十頁或 PROCESS BEGIN WAIT UNTIL 時(shí)鐘邊沿(binyn)表達(dá)式 IF 復(fù)位/置位條件表達(dá)式 THEN 復(fù)位/置位語句; ELSE 正常執(zhí)行語句; END IF; END PROCESS ; 共六十頁描述異步復(fù)位/置位時(shí), 應(yīng)將時(shí)鐘信號(hào)和復(fù)位/置位信號(hào)同時(shí)加入到進(jìn)程的敏感信號(hào)表中或WAIT ON語句后的信號(hào)表中, 而且在執(zhí)行時(shí), 需識(shí)別進(jìn)程是由時(shí)鐘激活還是(hi shi)由復(fù)位/置位信號(hào)激活, 并分別執(zhí)行相應(yīng)的操作。 其常用格式可表示為 : PROCESS (時(shí)鐘

29、信號(hào), 復(fù)位/置位信號(hào)) BEGIN IF 復(fù)位/置位信號(hào)有效 THEN 復(fù)位/置位語句; ELSIF 時(shí)鐘邊沿表達(dá)式 THEN 正常執(zhí)行語句; END IF ; END PROCESS ; 2) 異步復(fù)位(f wi)/置位共六十頁LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY ASDff ISPORT(CLK,D :IN STD_LOGIC; PRESET,CLR:IN STD_LOGIC; Q:OUT STD_LOGIC);END ENTITY ASDff;【例7.15】 異步復(fù)位(f wi)/置位的D觸發(fā)器共六十頁ARCHITECTURE

30、ART OF ASDff IS BEGIN PROCESS(CLK,PRESET,CLR) IS BEGIN IF(PRESET=1)THEN -置位信號(hào)(xnho)為1,則觸發(fā)器被置位 Q=1; ELSIF(CLR=1)THEN -復(fù)位信號(hào)為1,則觸發(fā)器被復(fù)位 Q=0; ELSIF(CLKEVENT AND CLK=1)THEN Q=D; END IF; END PROCESS;END ARCHITECTURE ART;共六十頁異步復(fù)位(f wi)D觸發(fā)器仿真波形共六十頁LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY SYDff ISPORT(D, CLK :IN STD_LOGIC; RESET:IN STD_LOGIC; Q:OUT STD_LOGIC);END ENTITY SYDff;【例7.16】 同步(tngb)復(fù)位的D觸發(fā)器共六十頁ARCHITECTURE ART OF SYDff IS BEGIN PROCESS(CLK) IS BEGIN IF(CLKEVENT AND CLK=1)THEN IF(RESET=0)

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論