版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
單元一EDA技術(shù)概述
1.什么是EDA技術(shù)?EDA技術(shù)的基本特征是什么?
答:EDA(ElectronicDesignAutomation,電子設(shè)計(jì)自動(dòng)化)
技術(shù)是電子設(shè)計(jì)工程師在計(jì)算機(jī)上完成電路的功能設(shè)計(jì)、邏輯設(shè)計(jì)、
性能分析、時(shí)序測(cè)試直至PCB(印制電路板)的自動(dòng)設(shè)計(jì)等。
EDA技術(shù)的基本特征是采用高級(jí)語(yǔ)言描述,具有系統(tǒng)級(jí)仿真和綜
合能力。
2.可編程邏輯器件有什么特點(diǎn)?有哪些可編程資源?
答:可編程邏輯器件的主要特點(diǎn)
1.縮短研制周期
2.降低設(shè)計(jì)成本
3.提高設(shè)計(jì)靈活性
3.寫出Altera器件中的下列英文縮寫的中文含義。
LELABPIAEAB
答:LE:邏輯單元
LAB:邏輯陣列塊
PIA:可編程連線陣列
EAB:嵌入式陣列塊
4.簡(jiǎn)述可編程邏輯器件的發(fā)展趨勢(shì)。
答:可編程邏輯器件未來的發(fā)展將呈現(xiàn)以下幾個(gè)方面的趨勢(shì):
1)向高密度、大規(guī)模的方向發(fā)展
2)向系統(tǒng)內(nèi)可重構(gòu)的方向發(fā)展
3)向低電壓、低功耗的方向發(fā)展
4)向高速可預(yù)測(cè)延時(shí)器件的方向發(fā)展
5)向混合可編程技術(shù)方向發(fā)展
單元二可編程邏輯器件的設(shè)計(jì)與開發(fā)
1.簡(jiǎn)述可編程邏輯器件的一般設(shè)計(jì)過程。
答:CPLD/FPGA器件的設(shè)計(jì)流程一般分為設(shè)計(jì)輸入、設(shè)計(jì)實(shí)現(xiàn)、
設(shè)計(jì)校驗(yàn)和編程下載4個(gè)步驟。
2.試比較可編程邏輯器件設(shè)計(jì)的常用輸入方式。
答:1)原理圖輸入
原理圖是圖形化的表達(dá)方式,它是利用軟件中所提供的元件符號(hào)
和連線來描述設(shè)計(jì)。其特點(diǎn)是比較直觀,便于進(jìn)行接口設(shè)計(jì)和引腳鎖
定,容易實(shí)現(xiàn)仿真,便于信號(hào)的觀察和電路的調(diào)整,系統(tǒng)運(yùn)行速率較
高,但當(dāng)描述復(fù)雜電路時(shí)則比較煩瑣。
2)硬件描述語(yǔ)言輸入
硬件描述語(yǔ)言輸入是采用文本方式描述設(shè)計(jì),這種方式的描述范
圍較寬,從簡(jiǎn)單的門電路到復(fù)雜的數(shù)字系統(tǒng)均可描述。特別是在描述
復(fù)雜設(shè)計(jì)時(shí),非常簡(jiǎn)潔。但這種描述方式不適合描述接口和連接關(guān)系,
并且該輸入方式必須依賴綜合器,只有好的綜合器才能把語(yǔ)言綜合成
優(yōu)化的電路。
3.列舉常用的EDA工具軟件,并比較各有什么特點(diǎn)。
答:1)SynpIify
該軟件是由SynpIicity公司專為FPGA和CPLD開發(fā)設(shè)計(jì)的邏輯
綜合工具。它在綜合優(yōu)化方面的優(yōu)點(diǎn)非常突出,得到了廣大用戶的好
評(píng)。它支持用Verilog和VHDL硬件描述語(yǔ)言描述的系統(tǒng)級(jí)設(shè)計(jì),具
有強(qiáng)大的行為及綜合能力。綜合后,能生成Verilog或VHDL網(wǎng)表,
以進(jìn)行功能級(jí)仿真。
Synplify的綜合過程分為三步:首先是語(yǔ)言綜合,將硬件描述
語(yǔ)言的設(shè)計(jì)編譯成結(jié)構(gòu)單元。接下來采用優(yōu)化算法對(duì)設(shè)計(jì)進(jìn)行優(yōu)化,
除去冗余項(xiàng),提高可靠性與速度。第三步是工藝映射,將設(shè)計(jì)映射為
相應(yīng)PLD的網(wǎng)表文件。
2)Synopsys
該軟件是另一種系統(tǒng)綜合軟件,它因綜合功能強(qiáng)大而被廣泛使
用。Synopsys綜合器的綜合效果比較理想,系統(tǒng)速度快,消耗資源
少。對(duì)系統(tǒng)的優(yōu)化過程大致分為兩步:第一步是設(shè)計(jì)規(guī)則,提出必須
滿足的設(shè)計(jì)要求,如最大延時(shí)、最大功耗、最大扇出數(shù)目、驅(qū)動(dòng)強(qiáng)度
等;第二步是提出各種設(shè)計(jì)約束,一般有反應(yīng)時(shí)間約束、芯片面積約
束等。綜合器根據(jù)設(shè)計(jì)要求,采用相應(yīng)算法,力爭(zhēng)使綜合效果達(dá)到最
佳。
Synopsys支持完整的VHDL和VeriIog語(yǔ)言子集,另外它的元件
庫(kù)中包含許多現(xiàn)成的實(shí)現(xiàn)方案,調(diào)用非常方便。正是因?yàn)檫@些突出的
優(yōu)點(diǎn),Synopsys逐漸成為設(shè)計(jì)人員普遍接受的標(biāo)準(zhǔn)工具。
3)ispDesignEXPERT
該軟件是Lattice公司專為本公司的PLD芯片開發(fā)設(shè)計(jì)的軟件,
它的前身是該公司的Synari。、ispEXPERT。ispDesignEXPERT是完備
的EDA軟件,支持系統(tǒng)開發(fā)的全過程,包括設(shè)計(jì)輸入、設(shè)計(jì)實(shí)現(xiàn)、仿
真與時(shí)序分析、編程下載等。
ispDesignEXPERT包括三個(gè)版本。Starter版適合初學(xué)者學(xué)習(xí),
可以免費(fèi)下載。Base版為試用版。它們的設(shè)計(jì)規(guī)模都低于600個(gè)宏
單元。Advanced版是專業(yè)設(shè)計(jì)版,支持該公司的各種系列器件,功
能全面。
4)MAX+plusll
該軟件是Altera公司專為本公司的PLD芯片開發(fā)設(shè)計(jì)的軟件。
其功能齊全,使用方便,易懂好學(xué),是最廣為接受的EDA工具之一。
5)QuartusII
該軟件也是Altera公司為本公司的PLD芯片開發(fā)設(shè)計(jì)的軟件。
它比MAX+pIusII支持的器件更全面,特另包括Altera公司的超高密
度的芯片系列——APEX系列器件。QuartusII可開發(fā)的單器件門數(shù)達(dá)
到了260萬門,特別適合高集成的大型系統(tǒng)的開發(fā)設(shè)計(jì)。本書介紹的
設(shè)計(jì)就是采用的該軟件。
4.EDA開發(fā)工具在“設(shè)計(jì)實(shí)現(xiàn)”過程中主要完成哪些工作?
答:EDA開發(fā)工具進(jìn)行設(shè)計(jì)實(shí)現(xiàn)時(shí)主要完成以下4個(gè)相關(guān)任務(wù)。
1)優(yōu)化和合并
優(yōu)化是指進(jìn)行邏輯化簡(jiǎn),把邏輯描述轉(zhuǎn)變?yōu)樽钸m合在器件中實(shí)現(xiàn)
的形式;合并是將模塊化設(shè)計(jì)產(chǎn)生的多個(gè)文件合并成一個(gè)網(wǎng)表文件,
并使層次設(shè)計(jì)平面化。
2)映射
映射是根據(jù)所選擇的PLD型號(hào),把設(shè)計(jì)分割為多個(gè)適合器件內(nèi)部
邏輯資源實(shí)現(xiàn)的邏輯小塊形式。
3)布局和布線
布局是將已分割的邏輯小塊放到器件內(nèi)部邏輯資源的具體位置,
并使它們易于連線,且連線最少;布線是利用器件內(nèi)的布線資源完成
各功能塊之間和反饋信號(hào)的連接。
4)產(chǎn)生編程文件
設(shè)計(jì)實(shí)現(xiàn)的最后一步是產(chǎn)生可供器件編程使用的數(shù)據(jù)文件。對(duì)
CPLD而言,產(chǎn)生的是熔絲圖文件(*.JEDEC);對(duì)FPGA器件,則產(chǎn)生
位數(shù)據(jù)流文件Bitstream。
5.簡(jiǎn)述QuartusII進(jìn)行EDA設(shè)計(jì)的一般步驟。
答:
1.為本項(xiàng)工程設(shè)計(jì)建立文件夾
2.建立工程
3.添加設(shè)計(jì)文件并保存
4.檢查設(shè)計(jì)
5.鎖定引腳并編譯
6.功能仿真
7.下載
單元三硬件描述語(yǔ)言
1.VHDL與VeriIlogHDL各有何特點(diǎn)?試比較各自的應(yīng)用場(chǎng)合。
答:一般的硬件描述語(yǔ)言可在三個(gè)層次上進(jìn)行電路描述,其層次
由高到低依次可分為行為級(jí)、RTL級(jí)和門電路級(jí)。VHDL通常更適合行
為級(jí)和RTL級(jí)的描述;VerilogHDL通常只適合RTL級(jí)和門電路級(jí)的
描述。因此,與VerilogHDL相比,VHDL是一種高級(jí)描述語(yǔ)言,適用
于電路的高級(jí)建模,最適合描述電路的行為,即描述電路的功能,但
它幾乎不能直接控制門電路,即控制電路的資源;VerilogHDL則是
一種低級(jí)的描述語(yǔ)言,最適合于描述門級(jí)電路,易于控制電路資源。
VHDL和VerilogHDL主要區(qū)別在于邏輯表達(dá)的描述級(jí)別。VHDL雖
然也可以直接描述門電路,但這方面的能力卻不如VerilogHDL;相
反,VerilogHDL在高級(jí)建模描述方面不如VHDL。VeriIogHDL的描述
風(fēng)格接近于電路原理圖,從某種意義上說,它是電路原理圖的高級(jí)文
本表7r方式。
2.VHDL程序有哪些基本的部分?各部分起什么作用?
答:VHDL程序可以分為兩部分。第一部分主要用于描述電路的
“外部端口”,包括器件名稱、端口的名稱、數(shù)據(jù)類型等,稱為“實(shí)
體說明”;第二部分主要用于描述電路的內(nèi)部結(jié)構(gòu)、功能及其實(shí)現(xiàn)的
算法,稱為“結(jié)構(gòu)體”。
3.BIT數(shù)據(jù)類型和STD_L0GIC數(shù)據(jù)類型有何區(qū)別?
答:BIT是二進(jìn)制位類型,其取值是一個(gè)1位的二進(jìn)制數(shù),只能
是?;?。
STD_L0GIC是工業(yè)標(biāo)準(zhǔn)邏輯類型,取值有0、1、Z(高阻)、X(未
知)等9種,該數(shù)據(jù)類型由IEEE庫(kù)中的STD_L0GIC_1164程序包定義。
4.端口模式BUFFER與INOUT有何區(qū)別?
答:INOUT是雙向端口,既可以輸入信號(hào),也可以輸出信號(hào);而
BUFFER也可以輸出實(shí)體信號(hào)到外部,但作為輸入時(shí),信號(hào)不是由外
部輸入,而是在實(shí)體內(nèi)由輸出信號(hào)反饋得到,即BUFFER模式的端口
在信號(hào)輸出實(shí)體的同時(shí),也可以被實(shí)體本身讀入。
5.什么是庫(kù)和程序包?常用的庫(kù)和程序包有哪些?
答:在利用VHDL進(jìn)行工程設(shè)計(jì)時(shí),為了提高設(shè)計(jì)效率以及使設(shè)
計(jì)遵循某些統(tǒng)一的語(yǔ)言標(biāo)準(zhǔn)或數(shù)據(jù)格式,有必要將一些有用的信息匯
集在一個(gè)或幾個(gè)庫(kù)(LIBRARY)中,以供VHDL調(diào)用。常用的庫(kù)有IEEE
庫(kù)、STD庫(kù)和WORK庫(kù)。
6.什么是并行語(yǔ)句?什么是順序語(yǔ)句?二者有何區(qū)別?
答:在VHDL中,并行語(yǔ)句有多種語(yǔ)句格式,各種并行語(yǔ)句在結(jié)
構(gòu)體中的執(zhí)行都是同步進(jìn)行的,或者說是并行運(yùn)行的,其執(zhí)行的方式
與書寫的順序無關(guān)。這種并行性是由硬件本身的并行性決定的,即一
旦電路接通電源,它的各部分就會(huì)按照事先設(shè)計(jì)好的方案同時(shí)工作。
并行語(yǔ)句在執(zhí)行時(shí),各并行語(yǔ)句之間可以有信息來往,也可以互為獨(dú)
立、互不相關(guān)。另外,每一并行語(yǔ)句內(nèi)部的語(yǔ)句可以有兩種不同的運(yùn)
行方式,即并行執(zhí)行方式(如塊語(yǔ)句)和順序執(zhí)行方式(如進(jìn)程語(yǔ)句)。
順序語(yǔ)句主要指的是語(yǔ)句的執(zhí)行(指仿真執(zhí)行)順序與其書寫順
序基本一致。但應(yīng)注意的是,這里的順序是對(duì)仿真軟件的運(yùn)行或順應(yīng)
VHDL語(yǔ)法的編程思路而言的,其相應(yīng)的硬件邏輯工作方式未必如此。
順序語(yǔ)句只能出現(xiàn)在進(jìn)程(PROCESS)中,而進(jìn)程本身屬于并行
語(yǔ)句,這就是說在同一設(shè)計(jì)實(shí)體中,所有的進(jìn)程都是并行執(zhí)行的,而
每一個(gè)進(jìn)程內(nèi)部的語(yǔ)句是順序執(zhí)行的。
常用的順序語(yǔ)句有賦值語(yǔ)句、IF語(yǔ)句、CASE語(yǔ)句、LOOP語(yǔ)句和
NULL語(yǔ)句。
7.信號(hào)和變量有何區(qū)別?
答:(1)信號(hào)是全局量,是一個(gè)實(shí)體內(nèi)部各部分之間進(jìn)行通信的
手段;而變量是局部量,只允許定義并作用于進(jìn)程和子程序中。當(dāng)欲
把變量值帶出進(jìn)程時(shí),變量須首先賦給信號(hào),然后由信號(hào)將其值帶出。
(2)信號(hào)的賦值采用符號(hào)“<二",而變量的賦值符號(hào)為“:二”。
(3)通常,變量的值可以傳遞給信號(hào),而信號(hào)的值卻不能傳遞給
變量。
(4)在進(jìn)程中,變量的賦值語(yǔ)句一旦被執(zhí)行,變量值立刻就被賦
予新值,在執(zhí)行下一條語(yǔ)句時(shí),該變量就用新賦的值參與運(yùn)算;而在
進(jìn)程中的信號(hào)賦值語(yǔ)句,該語(yǔ)句雖然已被執(zhí)行,但新的信號(hào)值并沒有
被立即代入,因而在執(zhí)行下一條語(yǔ)句時(shí),仍使用原來的信號(hào)值,直到
進(jìn)程結(jié)束時(shí),信號(hào)才根據(jù)最后一次的賦值被賦予新值。
(5)在結(jié)構(gòu)體的并行語(yǔ)句部分,若同一信號(hào)被賦值一次以上,則
編譯器將給出錯(cuò)誤報(bào)告,指出該信號(hào)出現(xiàn)了兩個(gè)驅(qū)動(dòng)源。在進(jìn)程中,
若同一信號(hào)被賦值一次以上,則編譯器將給出警告,指出只有最后一
次賦值有效,而變量的賦值是立即發(fā)生的。
8.IF語(yǔ)句和CASE語(yǔ)句的使用效果有何不同?
答:與IF語(yǔ)句相比,CASE語(yǔ)句組的程序可讀性比較好,這是因
為它把條件中“表達(dá)式”的所有取值都列了出來,可執(zhí)行條件一目了
然。但對(duì)相同的邏輯功能描述,綜合后,用CASE語(yǔ)句描述比IF描述
耗用更多的硬件資源。因此,對(duì)本身就具有優(yōu)先邏輯關(guān)系的描述(如
優(yōu)先編碼器),采用IF語(yǔ)句比CASE語(yǔ)句更合適。
9.畫出與下例實(shí)體描述相對(duì)應(yīng)的原理圖符號(hào)。
(1)實(shí)體一
ENTITYbuf3sIS
PORT(input:INSTD_LOGIC;
enable:INSTD_LOGIC;
output:OUTSTD_LOGIC);
ENDbuf3s;
BUF3s
INPUTX-INPUTOUTPUT-XOUTPUT
ENRBLEX-ENABLE
(2)實(shí)體二
ENTITYmux21IS
PORT(inO,in1,sel:INSTD_LOGIC;
output:OUTSTD_LOGIC);
ENDmux21;
Muxei
XNOX-INO
INXX—IHXOUTPUT-XOUTPUT
SELASEL
10.修改下列程序中的錯(cuò)誤。
ENTITYcountIS
PORT(elk:INBIT;
q:OUTBIT_VECTOR(7DOWNTO0););
ENDcount;
ARCHITECTUREaOFcount
BEGIN
PROCESS(elk)
IFelk'eventANDclk='1'THEN
q〈=q+1;
ENDPROCESS;
ENDa;
正確的:
ENTITYcountIS
PORT(clk:INBIT;
q:OUTBIT_VECTOR(7DOWNTO0));
ENDcount;
ARCHITECTUREaOFcount
BEGIN
PROCESS(elk)
IFclk,eventANDclk='1'THEN
q<=q+1;
ENDPROCESS;
ENDa;
11.修改下列語(yǔ)句中的錯(cuò)誤。
SIGNALinvalue:ININTEGERRANGE0TO15;
SIGNALoutvalue:OUTSTD_LOGIC;
CASEinvaIueIS
WHEN0=>outvalued'1';
WHEN1=>outvalue<='O';
ENDCASE;
正確的:....
SIGNALinvalue:ININTEGERRANGE0TO15;
SIGNALoutvalue:OUTSTD_LOGIC;
CASEinvaIueIS
WHEN0=>outvalue*'1
WHENothers=>outvaIue<='O';
ENDCASE;
12.圖3-25是一個(gè)含有上升沿觸發(fā)D觸發(fā)器的時(shí)序電路,試寫出
此電路的VHDL程序。
答:1、與非門
Iibraryieee;
useieee.std_Iogic_1164.aII;
entitynandsis
port(a,b:instd_logic;
q:outstd_logic);
endnands;
architectureaofnandsis
begin
q<=not(aandb);
enda;
2、觸發(fā)器
Iibraryieee;
useieee.std_Iogic_1164.aII;
entityd1is
port(d,cIk:instd_logic;
q:outstd_logic);
endd1;
architectureaofd1is
begin
Process(cIk)
begin
ifelk'eventandcIk='1'then
q<=d;
endif;
endprocess;
enda;
3、非門
Iibraryieee;
useieee.std_Iogic_1164.aII;
entitynotsis
port(a:instd_logic;
q:outstd_logic);
endnots;
architectureaofnotsis
begin
q<=nota;
enda;
4、時(shí)序電路
Iibraryieee;
useieee.std_Iogic_1164.aII;
entityd2is
port(cI,cIk:instd_logic;
out1:outstd_logic);
endd2;
architectureaofd2is
componentnands
port(a,b:instd_logic;
q:outstd_logic);
endcomponent;
componentd1
port(d,cIk:instd_logic;
q:outstd_logic);
endcomponent;
componentnots
port(a:instd_logic;
q:outstd_logic);
endcomponent;
signaItempi,temp2:std_logic;
begin
u1:nandsportmap(temp2,cI,tempi);
u2:d1portmap(tempi,cIk,temp2);
u3:notsportmap(temp2,out1);
enda;
單元四常用數(shù)字電路的設(shè)計(jì)
1.試設(shè)計(jì)一個(gè)將芯片內(nèi)的兩個(gè)節(jié)點(diǎn)a和b相接的VHDL程序。
Iibraryieee;
useieee.std_Iogic_1164.aII;
entityt1is
port(a:instd_logic;
b:outstd_logic);
endt1;
architectureaoft1is
begin
b<=a;
enda;
2.試設(shè)計(jì)一個(gè)4位并行奇校驗(yàn)電路,設(shè)輸出為p。當(dāng)各輸入信號(hào)
同時(shí)輸入的邏輯'1'的個(gè)數(shù)為奇數(shù)時(shí),輸出p=1,否則p=0。
Iibraryieee;
useieee.std_Iogic_1164.aII;
entityt2is
port(a:instd_Iogic_vector(3downto0);
p:outstd_logic);
endt2;
architectureaoft2is
begin
process(a)
begin
ifa="0001"ora="0010"ora="0100"ora="1000"
ora="0111"ora="1011"ora="1101"ora="1110"
then
P<='「;
eIse
P<=T;
endif;
endprocess;
enda;
3.設(shè)計(jì)一個(gè)8位數(shù)補(bǔ)碼生成電路,設(shè)輸入為d[7.,O],輸出為
p[7..0]o
Iibraryieee;
useieee.std_Iogic_1164.all;
useieee.std_Iogic_unsigned.all;
entityt3is
port(d:instd_Iogic_vector(7downto0);
p:outstd_Iogic_vector(7downto0));
endt3;
architectureaoft3is
begin
p<二(notD)+1;
enda;
4.試設(shè)計(jì)一個(gè)5人表決器。(提示:設(shè)置5個(gè)輸入,1個(gè)輸出。
輸入變量為'1'時(shí)表示表決者贊同,反之表示反對(duì)。輸出變量為'1'
時(shí)表示表決通過,通過的條件是5人中至少有3人同意。)
Iibraryieee;
useieee.std_Iogic_1164.aII;
entityt4is
port(a,b,c,d,e:instd_logic;
y:outstd_logic);
endt4;
architectureaoft4is
begin
y<二(aandbandc)or(aandcandd)or(aanddande)or
(bandcandd)or(banddande)or(canddande)or
(dandaandb)or(eandbandc);
enda;
5.試用VHDL描述芯片74LS138(3-8線譯碼器)的功能。74LS138
的功能見表472,s1、s2、s3為使能端,a2、a1、aO為地址選擇端,
y[0..7]為輸出端。
表47274LS138功能表
輸入輸出
s1s1+s2a2a1aOy[0..7]
0XXXX11111111
X1XXX11111111
1000001111111
1000110111111
1001011011111
1001111101111
1010011110111
1010111111011
1011011111101
1011111111110
LIBRARYIEEE;
USEIEEE.STD_L0GIC_1164.ALL;
ENTITYdecoder3_8IS
PORT(s1,s2,s3:inbit;
a:INBIT_VECTOR(2DOWNTO0);
y:OUTBIT_VECTOR(7DOWNTO0));
ENDdecoder3_8;
ARCHITECTUREbehOFdecoder3_8IS
BEGIN
process(s1,s2,s3)
begin
ifs1='O'then
y<="111111H";
eIsifs1='1'ors2='1'then
y<="111111H";
eIse
caseais
WHEN"000"=>y<="11111110";
WHEN"00r,=>y<="1111110r,;
WHEN"010"=>y<="11111011";
WHEN"0H"=>y<="111101H";
WHEN"100"=>y<="11101111";
WHEN"10r,=>y<="110111H";
WHEN"110"=>y<="10111111";
WHEN"1H"=>y<="011111H";
endcase;
endif;
endprocess;
ENDbeh;
6.試設(shè)計(jì)一個(gè)4位組合移位器,功能見表4-13,d[3..0]為輸入,
控制位為kz[1..0],輸出為
表4-134位組合移位器功能表
控制位kz[1..0]輸出f[3..0]功能
00d3d2d1d0不移位
01d2d1d0d3循環(huán)左移1位
10d1d0d3d2循環(huán)左移2位
11dOd3d2dl循環(huán)左移3位
Iibraryieee;
useieee.std_Iogic_1164.aII;
entityt6is
port(d:instd_Iogic_vector(3downto0);
KZ:instd_Iogic_vector(1downto0);
f:outstd_Iogic_vector(3downto0));
endt6;
architectureaoft6is
signaIq:std_Iogic_vector(3downto0);
begin
process(KZ)
begin
ifKZ="01"then
q(3downto1)<=d(2downto0);
q(0)<=d(3);
elsifKZ="10"then
q(3downto2)<=d(1downto0);
q(1)<=d(3);
q(O)〈=d(2);
elsifKZ="11"then
q(3)<=d(0);
q(0)<=d(1);
q(1)<=d(2);
q⑵<=d(3);
eIse
q<=d;
endif;
endprocess;
f〈二q;
enda;
7.試設(shè)計(jì)一個(gè)6位加法器,用于實(shí)現(xiàn)對(duì)兩個(gè)6位數(shù)的加法運(yùn)算,
其功能見表474。
表4746位加法器功能表
輸入輸出
a[5..0]b[5..0]s[5..0]c
aba+b進(jìn)位
Iibraryieee;
useieee.std_Iogic_1164.aII;
useieee.std_logic_unsigned.all;
entityt7is
port(a,b:instd_Iogic_vector(5downto0);
s:outstd_Iogic_vector(5downto0);
c:outstd_logic);
endt7;
architectureaoft7is
signaIm:std_logic_vector(6downto0);
begin
m<=a+('0'&b);
s<=m(5downto0);
c<=m(6);
enda;
8.設(shè)計(jì)一個(gè)具有異步置位/復(fù)位功能的JK觸發(fā)器。功能見表
4-15o
表4T4JK觸發(fā)器功能表
輸入輸出
enaprnclrcIkJKqqb
101XXX10
110XXX01
100XXXXX
111T00不變不變
111T0101
111t1010
111T11翻轉(zhuǎn)翻轉(zhuǎn)
Iibraryieee;
useieee.std_Iogic_1164.aII;
entityt8is
port(ena,prn,cIr,cIk,j,k:instd_logic;
q,qb:outstd_logic);
endt8;
architectureaoft8is
signaIm,mb:std_logic;
begin
process(ena,prn,cIr,cIk)
begin
ifprn='O'then
m<=T;
mb<='0';
eIsifcIr=,O'then
m<='O';
mb<='「;
eIsifelk'eventandcIk='1'then
m<二(jand(notm))or((notk)andm);
mb<=notm;
endif;
endprocess;
q<=m;
qb<=mb;
enda;
9.設(shè)計(jì)一個(gè)RS觸發(fā)器,功能見表4-15。
表475RS觸發(fā)器功能表
輸入輸出
RSQ
00不變
011
100
11不定
Iibraryieee;
useieee.std_Iogic_1164.aII;
entityt9is
port(cIk,R,s:instd_logic;
q:outstd_logic);
endt9;
architectureaoft9is
signaIm:std_logic;
begin
process(cIk)
begin
ifelk'eventandcIk='1'then
ifr='O'ands='0'then
m<=m;
eIsifr='O'ands='1'then
m<=T;
eIsifr='1'ands='O'then
m<='0';
elseNULL;
endif;
endif;
endprocess;
q<=m;
enda;
10.試設(shè)計(jì)一個(gè)4位二進(jìn)制數(shù)的可逆計(jì)數(shù)器,時(shí)鐘端為elk,計(jì)
數(shù)輸出端為q[3..O],計(jì)數(shù)方向控制端為dire。當(dāng)dire=1時(shí)做加法
計(jì)數(shù),當(dāng)dire=0時(shí)做減法計(jì)數(shù)。
Iibraryieee;
useieee.std_Iogic_1164.aII;
useieee.std_Iogic_unsigned.all;
entityt10is
port(cIk,dire:instd_logic;
q:outstd_Iogic_vector(3downto0));
endt10;
architectureaoft10is
signaIm:std_logic_vector(3downto0);
begin
process(cIk,dire)
begin
ifelk'eventandcIk='1'then
ifdire='1"then
m<=m+1;
eIse
m<=m-1;
endif;
endif;
endprocess;
q<=m;
enda;
11.用VHDL描述同步十進(jìn)制加法計(jì)數(shù)器芯片74LS160的功能,時(shí)
鐘端為elk,清零端為clr,預(yù)置數(shù)輸入端為d[3..0],預(yù)置數(shù)控制
端為Id,功能控制端為ep和et,計(jì)數(shù)輸出端為q[3..O],進(jìn)位輸出
端為c。74LS160功能見表4-16。
表47674LS160功能表
cIkclrIdepet工作狀態(tài)
X0XXX置零
T10XX預(yù)置數(shù)
X1101保持
X11X0保持(c=0)
X1111計(jì)數(shù)
Iibraryieee;
useieee.std_Iogic_1164.aII;
useieee.std_logic_unsigned.all;
entityt11is
port(cIk,cIr,Id,ep,et:instd_logic;
d:instd_Iogic_vector(3downto0);
q:outstd_Iogic_vector(3downto0);
c:outstd_logic);
endt11;
architectureaoft11is
signaIm:std_logic_vector(3downto0);
begin
process(cIr,cIk)
begin
ifcIr='O'then
m<="0000";
eIsifelk'eventandcIk='1'then
ifld='O'then
m<=d;
eIsifep='1'andet='1'then
m<=m+1;
eIsifep='O'andet='1'then
m<=m;
eIsifet='O'then
m<=m;
c<='0';
endif;
endif;
endprocess;
q<=m;
enda;
12.試設(shè)計(jì)一個(gè)60進(jìn)制的同步加法計(jì)數(shù)器,時(shí)鐘端為elk,計(jì)數(shù)
輸出端為q。
Iibraryieee;
useieee.std_Iogic_1164.aII;
useieee.std_Iogic_unsigned.all;
entityt12is
port(elk:instd_logic;
q:outstd_Iogic_vector(5downto0));
endt12;
architectureaoft12is
signaIm:std_logic_vector(5downto0);
begin
process(cIk)
begin
ifelk'eventandcIk='1'then
ifrTF"1110U"then
m<="000000";
eIse
m<=m+1;
endif;
endif;
endprocess;
q〈二m;
enda;
13.試設(shè)計(jì)一個(gè)128進(jìn)制的同步加法計(jì)數(shù)器,時(shí)鐘端為elk,計(jì)
數(shù)輸出端為q0
Iibraryieee;
useieee.std_Iogic_1164.aII;
useieee.std_Iogic_unsigned.all;
entityt13is
port(elk:instd_logic;
q2,q1,qO:outstd_Iogic_vector(3downto0));
endt13;
architectureaoft13is
signaIb,s,g:std_Iogic_vector(3downto0);
begin
process(cIk)
begin
ifelk'eventandcIk='1'then
ifb>"0000"then
ifs>"0001"then
ifg>"0111"then
g<="0000";
b<="0000";
s<="0000";
eIse
g<=g+1;
endif;
eIse
ifg="1001"then
s<=s+1;
g<="0000";
eIse
s<=S;
g〈=g+1;
endif;
endif;
eIse
ifs="1001"then
b<=b+1;
s<="0000";
eIse
ifg="1001"then
s<=s+1;
g<="0000";
else
s<=S;
g<=g+1;
endif;
endif;
endif;
endif;
endprocess;
q2<=b;qK=s;qO<=g;
enda;
單元五數(shù)字系統(tǒng)設(shè)計(jì)實(shí)例
1.設(shè)計(jì)一個(gè)8X8發(fā)光點(diǎn)矩陣逐點(diǎn)掃描顯示控制電路,要求如下。
(1)光點(diǎn)從屏左上角像素點(diǎn)向右開始逐點(diǎn)逐行掃描,終止于右下
角像素點(diǎn),然后重復(fù)上述過程;
(2)掃描一幀所需時(shí)間為13so
Iibraryieee;
useieee.std_Iogic_1164.aII;
useieee.std_logic_unsigned.all;
entitydzis
port(elk:instd_logic;
row,lie:outstd_Iogic_vector(7downto0));
enddz;
architectureaofdzis
signaIcountr,countI:std_Iogic_vector(2downto0);
signaIc:std_logic;
begin
p1:process(cIk)
begin
ifelk'eventandcIk='1'then
ifcountl="111"then
c<=T;
countI<="000";
eIse
c<='0';
countI<=countI+1;
endif;
endif;
endprocessp1;
p2:process(c)
begin
ifc'eventandc='1'then
countr<=countr+1;
endif;
endprocessp2;
p3:process(countI,countr)
begin
casecountris
when"000"=>row<="01111111";一第一行顯示
ifcountl="000"then
Iie<="10000000";一第一歹“
eIsifcountI="001"then
Iie<="01000000";一第二列
eIsifcountl="010"then
Iie<="00100000";
eIsifcountI="011"then
Iie<="00010000";
eIsifcountI="100"then
Iie<="00001000";
eIsifcountI="101"then
Iie<="00000100";
eIsifcountI="110"then
Iie<="00000010";
eIsifcountI="111"then
Iie<="00000001";
endif;
when"001"=>row<="10111111";一第二行顯示
ifcountl="OOO"then
Iie<="10000000";
eIsifcountI="001"then
Iie<="01000000";
eIsifcountl="010"then
Iie<="00100000";
eIsifcountI="011"then
Iie<="00010000";
eIsifcountl="100"then
Iie<="00001000";
eIsifcountI="101"then
Iie<="00000100";
elsifcountl="110"then
Iie<="00000010";
elsifcountI="111"then
Iie<="00000001";
endif;
when"010"=>row<="11011111";
ifcountl="000"then
Iie<="10000000";
elsifcountI="001"then
Iie<="01000000";
eIsifcountI="010"then
Iie<="00100000";
eIsifcountI="011"then
Iie<="00010000";
eIsifcountl="100"then
Iie<="00001000";
eIsifcountI="101"then
Iie<="00000100";
eIsifcountl="110"then
Iie<="00000010";
eIsifcountI="111"then
Iie<="00000001";
endif;
when"0H"=>row<="11101111";
ifcountI="000"then
Iie<="10000000";
eIsifcountI="001"then
Iie<="01000000";
eIsifcountl="010"then
Iie<="00100000";
eIsifcountI="011"then
Iie<="00010000";
eIsifcountl="100"then
Iie<="00001000";
eIsifcountl="101"then
Iie<="00000100";
eIsifcountl="110"then
Iie<="00000010";
eIsifcountI="111"then
Iie<="00000001";
endif;
when"100"=>row<="11110111";
ifcountl="000"then
Iie<="10000000";
eIsifcountI="001"then
Iie<="01000000";
eIsifcountl="010"then
Iie<="00100000";
eIsifcountI="011"then
Iie<="00010000":
eIsifcountl="100"then
Iie<="00001000";
eIsifcountl="101"then
Iie<="00000100";
eIsifcountI="110"then
Iie<="00000010";
eIsifcountl="111"then
Iie<="00000001";
endif;
when"10r,=>row<="11111011";
ifcountl="000"then
Iie<="10000000";
eIsifcountI="001"then
Iie<="01000000";
eIsifcountI="010"then
Iie<="00100000";
eIsifcountI="011"then
Iie<="00010000";
eIsifcountl="100"then
Iie<="00001000";
eIsifcountI="101"then
Iie<="00000100";
eIsifcountl="110"then
Iie<="00000010";
eIsifcountl="111"then
Iie<="00000001";
endif;
when"110"=>row<="11111101";
ifcountl="000"then
Iie<="10000000";
eIsifcountI="001"then
Iie<="01000000";
eIsifcountI="010"then
Iie<="00100000";
eIsifcountI="011"then
Iie<="00010000";
eIsifcountl="100"then
Iie<="00001000";
eIsifcountI="101"then
Iie<="00000100";
eIsifcountI="110"then
Iie<="00000010";
eIsifcountl="111"then
Iie<="00000001";
endif;
whenothers=>row<="11111110";
ifcountl="000"then
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- GB 12158-2024防止靜電事故通用要求
- 二零二五年度地質(zhì)災(zāi)害防治安全承包合同范本2篇
- 2025年度老舊廠房拆除重建項(xiàng)目轉(zhuǎn)讓合同3篇
- 二零二五版UPS不間斷電源系統(tǒng)在數(shù)據(jù)中心節(jié)能改造中的應(yīng)用合同3篇
- 二零二五年度食品安全樣本檢驗(yàn)合同2篇
- 2025年度物業(yè)管理委托合同(住宅小區(qū))3篇
- 三方監(jiān)理服務(wù)協(xié)議:2024年度工程監(jiān)管協(xié)議版B版
- 二零二五版公司銷售業(yè)務(wù)員合同協(xié)議書含虛擬貨幣交易業(yè)務(wù)合作3篇
- 2024年轎車物流服務(wù)協(xié)議模板版B版
- 2024煙花爆竹行業(yè)信用風(fēng)險(xiǎn)防范購(gòu)銷合同管理3篇
- 2025年山東光明電力服務(wù)公司招聘筆試參考題庫(kù)含答案解析
- 《神經(jīng)發(fā)展障礙 兒童社交溝通障礙康復(fù)規(guī)范》
- 詩(shī)詞接龍(飛花令)PPT
- 子宮內(nèi)膜癌(課堂PPT)
- 澳大利亞公司法1-30
- 海上試油測(cè)試技術(shù)0327
- 中國(guó)地圖標(biāo)準(zhǔn)版(可編輯顏色)
- 瑪氏銷售常用術(shù)語(yǔ)中英對(duì)照
- (完整)貓咪上門喂養(yǎng)服務(wù)協(xié)議書
- 上海牛津版三年級(jí)英語(yǔ)3B期末試卷及答案(共5頁(yè))
- 行為疼痛量表BPS
評(píng)論
0/150
提交評(píng)論