2023年VHDL實驗報告范文_第1頁
2023年VHDL實驗報告范文_第2頁
2023年VHDL實驗報告范文_第3頁
2023年VHDL實驗報告范文_第4頁
2023年VHDL實驗報告范文_第5頁
已閱讀5頁,還剩17頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

專用集成電路實驗報告

13050Z01

劉德文

實驗一開發(fā)平臺軟件安裝與認知實驗

實驗內容

1、本實驗以三線八線譯碼器(LS74138)為例,在XilinxISE9.2軟件平臺上完畢

設計電路的VHDL文本輸入、語法檢查、編譯、仿真、管腳分派和編程下載等操作。下

載芯片選擇Xilinx公司的CoolRunnerII系列XC2c256-7PQ208作為目的

仿真芯片。

2、用1中所設計的的三線八線譯碼器(LS74138)生成一個LS74138元件,在XilinxI

SE9.2軟件原理圖設計平臺上完畢LS74138元件的調用,用原理圖的方法設計三

線八線譯碼器(LS74138),實現(xiàn)編譯,仿真,管腳分派和編程下載等操作。

源程序:

libraryIEEE;

useIEEE.STD_LOGIC_1164.ALL;

useIEEE.STD_L0GIC_ARITH.ALL;

useIEEE.STD_LOGIC_UNSIGNED.ALL;

—Uncommentthefollowing1inestousethedec1arationsthat

are

providedforinstantiatingXilinxprimitivecomponents.

—1ibraryUNISIM;

--useUNISIM.VComponents.all;

entity1s74138is

Port(gl:instd_1ogic;

g2:instdlogic;

inp:instd_logic_vector(2downto0);

y:outstd_1ogic_vector(7downto0));

endls74138;

architectureBehavioralofIs74138is

begin

process(gl,g2,inp)

begin

if((glandg2)=,1r)then

caseinpis

awhen"000z/=>y<=H00000001〃;

ewhenz,001,z=>y<=,,00000010〃;

when〃010,z=>y<=,z00000100〃;

when〃011H=>y<=〃00001000〃;

。when〃100〃=〉y〈=〃00010000";

when〃101〃=>y<="00100000〃;

when"110"=>y<="01000000〃;

。when,Z11l/z=>y<=H10000000〃;

。whenothers=>y<="00000000〃;

?endcase;

else

gy<=〃00000000〃;

endif;

endprocess;

endBehavioral;

波形文獻:

304

?1H

"2SinpB01000001X010oil100101noHl000X001)

訟6□yHC(0102X040810204080(01X02)

07-y[7]HI

-y[6]Hi

39-y[5]HI

?10-y[4]HI

Q11-y[3]Hl

砂12-y[2]HlJ

<^13-y[l]H—1_」

今14-y[0]HI1_

生成元器件及連接電路

te74138

:q11----------、幸仃二「二LT-----------yf7.,01

I----------;貨型y[7-0]S

:Q21----------\

:、樂仃

一n工p[二2..O」].........…I--…--屐------......?np[2..O]

tnj5t

思考:

有程序可以看出,定義了三個輸入端,一個輸出端。gl,g2為使能輸入端,當全為一時,

開始執(zhí)行寬度為三的輸入inp,并聽過程序實現(xiàn)三八譯碼器的功能。通過實驗,分別用了原

理圖和vhd1語言兩種方式進行調試。兩種方法各有優(yōu)缺陷。對于原理圖而言,可以清楚

直觀的看出電路各部分的構造,但卻只能在原有的基礎上進行鏈接而無法隨意修改元器件功

能;vhd1語言則可以按照實際的需求進行編寫程序,從而可以實現(xiàn)開發(fā)者想要實現(xiàn)的功能。

實驗二組合邏輯電路的VHDL語言實現(xiàn)

實驗內容:

1.用VHDL語言實現(xiàn)優(yōu)先編碼器的設計并實現(xiàn)功能仿真

2.用VHDL語言實現(xiàn)四選一選擇器的設計并實現(xiàn)功能仿真。

1.優(yōu)先編碼器源程序

LIBRARYIEEE;

USEIEEE.STD_L0GIC_1164.ALL;

ENTITYpriorityencoderIS

PORT(input:INSTD_L0GIC_VECTOR(7DOWNT00);

y:OUTSTD_LOGIC_VECTOR(2DOWNTO0));

ENDpriorityencoder;

ARCHITECTURErt1OFpriorityencoderIS

BEGIN

PROCESS(input)

BEGIN

IF(input(0)=0')THEN

ELSIF(input(l)=0")THEN

y<=H110H;

ELSIF(input(2)=,0')THEN

y<=n101u;

ELSIF(input(3)=,O')THEN

y<="100";

ELSIF(input(4)='O')THEN

y<=〃011〃;

ELSIF(input⑸='O')THEN

yV=〃01O〃;

ELSIF(input(6)='O')THEN

y<=〃OO1〃;

ELSE

y<=0000";

ENDIF;

ENDPR0CESS;

ENDrtl;

波形圖

原理圖:

pnontyencoder

input(7..O]mputp..O]y[2..O)露直匚七5港加

inst

2.四選一選擇器源程序:

LIBRARYIEEE;

USEIEEE.STD_LOGIC_1164.ALL;

ENTITYmux4IS

PORT(input:INSTD_LOGIC_VECTOR(3DOWNTO0);

a,b:INSTD_L0GIC;

y:0UTSTD_LOGIC);

ENDmux4;

ARCHITECTURErt1OFmux4IS

SIGNALsel:STD_L0GIC_VECT0R(1DOWNTO0);

BEGIN

sel<=b&a;

PROCESS(input,se1)

BEGIN

IF(sel=〃OO〃)THEN

y<=input(0);

ELSIF(sel=,z01z,)THEN

y<=input(1);

ELSIF(se1=〃10〃)THEN

y<=input(2);

ELSE

y<=input⑶;

ENDIF;

ENDPROCESS;

ENDrtl;

波形圖

原理圖

!mux4

猶作近..;

「而詞幻①...-inpui[Oujy

aa

Kb

:inst

思考:

1.優(yōu)先編碼器:通過程序定義了一個八位的輸入端和一個三位的輸入端。一方面是通過八位

輸入端的最低位開始判斷,假如是0,則輸出為:111;假如是1,則判斷

二位,以此類推,直到最后一位,假如都不滿足,則輸出:0OOo

2.四選一選擇器:一共有三個輸入,其中一個是寬度為四的可供選擇的輸入端,將一個四位

寬度的二進制碼賦值給input端,通過a與b的輸入選擇input的輸出。如ab為00時,則輸

出為:input(O),以此類推。

實驗三時序邏輯電路的VHDL語言實驗

實驗內容:(3選1)

(一)、設計一個60進制的計數(shù)器

(-)設計一帶使能的同步復位清零的遞增8位二進制計數(shù)器

(三)設計一帶使能的異步清零復位的遞增8位二進制計數(shù)器

六十進制(異步清零)源程序:

libraryieee;

useieee.std_logic_1164.all;

useieee.std_1ogic_unsigned.a11;

entityycounteris

port(cIk,clear,enable:instd_logic;

—Id:instd_logic;

--d:instd_logic_vector(7downto0);

qk:outstd_1ogic_vector(7downto0));

endycounter;

architecturea_ycounterofycounteris

begin

PROCESS(cIk)

VARIABLEent:std_logic_vector(7downto0);

BEGIN

IF(clk7EVENTANDcIk='1')THEN

IF(clear='0')THEN

ent:="00000000";

—ELSE

—IF(Id='O')THEN

一一ent:=d;

ELSE

IF(enable='1')THEN

ent:=cnt+z,00000001";

if(cnt="00111100n)then

ent:=00000000/z;

endif;

ENDIF;

—ENDIF;

ENDIF;

ENDIF;

qk<=ent;

ENDPROCESS;

enda_ycounter;

波形圖:

六十進制(同步置數(shù))源程序:

libraryieee;

useieee.std_1ogic_l164.all;

useieee.std_logic_unsigned.all;

entityycounteris

port(elk,clear,enab1e:instd_logic;

Id:instd_logic;

d:instdlogic_vector(7downto0);

qk:outstd_logic_vector(7downto0));

endycounter;

architecturea_ycounterofycounteris

begin

PROCESS(elk)

VARIABLEent:std_1ogic_vector(7downto0);

BEGIN

IF(c1k‘EVENTANDc1k='1')THEN

IF(c1ear='O')THEN

cnt:=H00000000";

ELSE

IF(Id='0')THEN

ent:=d;

ELSE

IF(enable='l')THEN

ent:=ent+”00000001";

if(cnt=,z00111011')then

Ld:=1;

endif;

ENDIF;

ENDIF;

ENDIF;

ENDIF;

qk<=cnt;

ENDPROCESS;

endaycounter;

波形圖:

思考:

六十進制計數(shù)器的實現(xiàn),1)異步清零程序的實現(xiàn):通過判斷最后一個狀態(tài),由于該計數(shù)器位

六十進制,所以最后一個狀態(tài)為59,用二進制碼表達為:"00111011",即當計數(shù)器的狀態(tài)

為六十,即"00111100"狀態(tài)時,計數(shù)器清零,輸出00000000。2)同步置數(shù)程序的實現(xiàn):

當計數(shù)器達成狀態(tài),當計數(shù)器達成狀態(tài)"00111011"時,1d被賦值為0,執(zhí)行置數(shù)功能,

將d的值賦值給y,計數(shù)器從零開始計數(shù)。

實驗四VHDL層次化設計方法實驗

實驗內容:

設計一個8位移位寄存器。各個D觸發(fā)器模塊采用VHDL語言編寫,分別用原理圖、VHDL

語言元件例化語句和生成語句的方法實現(xiàn)8位移位寄存器的設計。

D觸發(fā)器源程序:

libraryIEEE;

useIEEE.STD_L0GIC_1164.ALL;

useIEEE.STD_LOGIC_ARITH.ALL;

useIEEE.STD_L0GIC_UNSIGNED.ALL;

Uncommentthefoilowinglinestousethedec1arationsthatare

-providedforinstantiatingXilinxprimitivecomponents.

--1ibraryUNISIM;

—useUNISIM.VComponents.all;

entityDehuis

Port(CLK:inSTD_L0GIC;

D:inSTD_LOGIC;

Q:outSTDLOGIC;

CLEAR:inSTD_L0GIC;

Q_N:outSTDLOGIC);

endDehu;

ARCHITECTUREBEUOFDchuIS

oSIGNALQ1:STD_LOGIC;

BEGIN

PROCESS(CLEAR,CLK,QI)

BEGIN

。IFCLEAR='O'

THENQl<=0*;

ELSIFCLK,EVENTANDCLK='f

。WHENQI<=D;

ENDIF;

ENDPROCESS;

。Q〈二Q1;

oQ_N<=notQ1;

ooENDBEH;

波形圖:

D觸發(fā)器:

八位移位寄存器:

-Z0CLEARU1I_

elkU1廠_rn_rn__n_rn_oL_r_L_rnL-rnL_m_r-i_rn_rn

22DB1i____

"3QOU0_?i___??_

QIU0__??__ii_

05Q2U0_?i___?i___?i_

<>6Q3U0J???i__j_1_

07Q4U0L_?I___?i___?i_i

Q8Q5U0Ji??i?rn??

09Q6V0?i?i_______j"i_f

10Q7U1_li??LJ-Lj?1

八位移位寄存器原理圖:

元件例化:

1ibraryIEEE;

useIEEE.STD_LOGIC_1164.ALL;

useIEEE.STD_LOGIC_ARITH.ALL;

useIEEE.STD_LOGIC_UNSIGNED.ALL;

---Uncommentthefollowing1inestousethedeclarationsthat

—providedforinstantiatingXilinxprimitivecomponents.

-libraryUNISIM;

一useUNISIM.VComponents.al1;

entityshift_reg_8_comis

Port(a,c1k,rst:inSTDLOGIC;

b:outSTD_LOGIC);

endshift_reg_8_com;

ARCHITECTUREBEHOFshift_reg_8_comIS

0componentdff1

Port(d,elk,rst:inSTDLOGIC;

q:outSTD_LOGIC);

Endcomponent;

Signalq:STD_L0GIC_VECTOR(8D0WNT00);

BEGIN

oq(0)<=a;

dO:dff1PORTMAP(q(O),clk,rst,q(l));

d1:dfflPORTMAP(q(1),elk,rst,q(2));

d2:dff1PORTMAP(q(2),elk,rst,q(3));

d3:dfflPORTMAP(q(3),clk,rst,q(4));

d4:dff1PORTMAP(q(4),elk,rst,q(5));

d5:dff1PORTMAP(q(5),c1k,rst,q(6));

d6:dfflPORTMAP(q(6),c1k,rst,q(7));

d7:dfflPORTMAP(q(7),clk,rst,q(8));

b<=q(4);

Endstr;

生成語句:

libraryIEEE;

useIEEE.STD_L0GIC_1164.ALL;

useIEEE.S

溫馨提示

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

評論

0/150

提交評論