版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
單元一EDA技術(shù)概述
1.什么是EDA技術(shù)?EDA技術(shù)的基本特征是什么?
答:EDA(ElectronicDesignAutomation,電子設(shè)計自動化)
技術(shù)是電子設(shè)計工程師在計算機上完成電路的功能設(shè)計、邏輯設(shè)計、
性能分析、時序測試直至PCB(印制電路板)的自動設(shè)計等。
EDA技術(shù)的基本特征是采用高級語言描述,具有系統(tǒng)級仿真和綜
合能力。
2.可編程邏輯器件有什么特點?有哪些可編程資源?
答:可編程邏輯器件的主要特點
1.縮短研制周期
2.降低設(shè)計成本
3.提高設(shè)計靈活性
3.寫出Altera器件中的下列英文縮寫的中文含義。
LELABPIAEAB
答:LE:邏輯單元
LAB:邏輯陣列塊
PIA:可編程連線陣列
EAB:嵌入式陣列塊
4.簡述可編程邏輯器件的發(fā)展趨勢。
答:可編程邏輯器件未來的發(fā)展將呈現(xiàn)以下幾個方面的趨勢:
1)向高密度、大規(guī)模的方向發(fā)展
2)向系統(tǒng)內(nèi)可重構(gòu)的方向發(fā)展
3)向低電壓、低功耗的方向發(fā)展
4)向高速可預(yù)測延時器件的方向發(fā)展
5)向混合可編程技術(shù)方向發(fā)展
單元二可編程邏輯器件的設(shè)計與開發(fā)
1.簡述可編程邏輯器件的一般設(shè)計過程。
答:CPLD/FPGA器件的設(shè)計流程一般分為設(shè)計輸入、設(shè)計實現(xiàn)、
設(shè)計校驗和編程下載4個步驟。
2.試比較可編程邏輯器件設(shè)計的常用輸入方式。
答:1)原理圖輸入
原理圖是圖形化的表達方式,它是利用軟件中所提供的元件符號
和連線來描述設(shè)計。其特點是比較直觀,便于進行接口設(shè)計和引腳鎖
定,容易實現(xiàn)仿真,便于信號的觀察和電路的調(diào)整,系統(tǒng)運行速率較
高,但當(dāng)描述復(fù)雜電路時則比較煩瑣。
2)硬件描述語言輸入
硬件描述語言輸入是采用文本方式描述設(shè)計,這種方式的描述范
圍較寬,從簡單的門電路到復(fù)雜的數(shù)字系統(tǒng)均可描述。特別是在描述
復(fù)雜設(shè)計時,非常簡潔。但這種描述方式不適合描述接口和連接關(guān)系,
并且該輸入方式必須依賴綜合器,只有好的綜合器才能把語言綜合成
優(yōu)化的電路。
3.列舉常用的EDA工具軟件,并比較各有什么特點。
答:1)SynpIify
該軟件是由SynpIicity公司專為FPGA和CPLD開發(fā)設(shè)計的邏輯
綜合工具。它在綜合優(yōu)化方面的優(yōu)點非常突出,得到了廣大用戶的好
評。它支持用Verilog和VHDL硬件描述語言描述的系統(tǒng)級設(shè)計,具
有強大的行為及綜合能力。綜合后,能生成Verilog或VHDL網(wǎng)表,
以進行功能級仿真。
Synplify的綜合過程分為三步:首先是語言綜合,將硬件描述
語言的設(shè)計編譯成結(jié)構(gòu)單元。接下來采用優(yōu)化算法對設(shè)計進行優(yōu)化,
除去冗余項,提高可靠性與速度。第三步是工藝映射,將設(shè)計映射為
相應(yīng)PLD的網(wǎng)表文件。
2)Synopsys
該軟件是另一種系統(tǒng)綜合軟件,它因綜合功能強大而被廣泛使
用。Synopsys綜合器的綜合效果比較理想,系統(tǒng)速度快,消耗資源
少。對系統(tǒng)的優(yōu)化過程大致分為兩步:第一步是設(shè)計規(guī)則,提出必須
滿足的設(shè)計要求,如最大延時、最大功耗、最大扇出數(shù)目、驅(qū)動強度
等;第二步是提出各種設(shè)計約束,一般有反應(yīng)時間約束、芯片面積約
束等。綜合器根據(jù)設(shè)計要求,采用相應(yīng)算法,力爭使綜合效果達到最
佳。
Synopsys支持完整的VHDL和VeriIog語言子集,另外它的元件
庫中包含許多現(xiàn)成的實現(xiàn)方案,調(diào)用非常方便。正是因為這些突出的
優(yōu)點,Synopsys逐漸成為設(shè)計人員普遍接受的標(biāo)準(zhǔn)工具。
3)ispDesignEXPERT
該軟件是Lattice公司專為本公司的PLD芯片開發(fā)設(shè)計的軟件,
它的前身是該公司的Synari。、ispEXPERT。ispDesignEXPERT是完備
的EDA軟件,支持系統(tǒng)開發(fā)的全過程,包括設(shè)計輸入、設(shè)計實現(xiàn)、仿
真與時序分析、編程下載等。
ispDesignEXPERT包括三個版本。Starter版適合初學(xué)者學(xué)習(xí),
可以免費下載。Base版為試用版。它們的設(shè)計規(guī)模都低于600個宏
單元。Advanced版是專業(yè)設(shè)計版,支持該公司的各種系列器件,功
能全面。
4)MAX+plusll
該軟件是Altera公司專為本公司的PLD芯片開發(fā)設(shè)計的軟件。
其功能齊全,使用方便,易懂好學(xué),是最廣為接受的EDA工具之一。
5)QuartusII
該軟件也是Altera公司為本公司的PLD芯片開發(fā)設(shè)計的軟件。
它比MAX+pIusII支持的器件更全面,特另包括Altera公司的超高密
度的芯片系列——APEX系列器件。QuartusII可開發(fā)的單器件門數(shù)達
到了260萬門,特別適合高集成的大型系統(tǒng)的開發(fā)設(shè)計。本書介紹的
設(shè)計就是采用的該軟件。
4.EDA開發(fā)工具在“設(shè)計實現(xiàn)”過程中主要完成哪些工作?
答:EDA開發(fā)工具進行設(shè)計實現(xiàn)時主要完成以下4個相關(guān)任務(wù)。
1)優(yōu)化和合并
優(yōu)化是指進行邏輯化簡,把邏輯描述轉(zhuǎn)變?yōu)樽钸m合在器件中實現(xiàn)
的形式;合并是將模塊化設(shè)計產(chǎn)生的多個文件合并成一個網(wǎng)表文件,
并使層次設(shè)計平面化。
2)映射
映射是根據(jù)所選擇的PLD型號,把設(shè)計分割為多個適合器件內(nèi)部
邏輯資源實現(xiàn)的邏輯小塊形式。
3)布局和布線
布局是將已分割的邏輯小塊放到器件內(nèi)部邏輯資源的具體位置,
并使它們易于連線,且連線最少;布線是利用器件內(nèi)的布線資源完成
各功能塊之間和反饋信號的連接。
4)產(chǎn)生編程文件
設(shè)計實現(xiàn)的最后一步是產(chǎn)生可供器件編程使用的數(shù)據(jù)文件。對
CPLD而言,產(chǎn)生的是熔絲圖文件(*.JEDEC);對FPGA器件,則產(chǎn)生
位數(shù)據(jù)流文件Bitstream。
5.簡述QuartusII進行EDA設(shè)計的一般步驟。
答:
1.為本項工程設(shè)計建立文件夾
2.建立工程
3.添加設(shè)計文件并保存
4.檢查設(shè)計
5.鎖定引腳并編譯
6.功能仿真
7.下載
單元三硬件描述語言
1.VHDL與VeriIlogHDL各有何特點?試比較各自的應(yīng)用場合。
答:一般的硬件描述語言可在三個層次上進行電路描述,其層次
由高到低依次可分為行為級、RTL級和門電路級。VHDL通常更適合行
為級和RTL級的描述;VerilogHDL通常只適合RTL級和門電路級的
描述。因此,與VerilogHDL相比,VHDL是一種高級描述語言,適用
于電路的高級建模,最適合描述電路的行為,即描述電路的功能,但
它幾乎不能直接控制門電路,即控制電路的資源;VerilogHDL則是
一種低級的描述語言,最適合于描述門級電路,易于控制電路資源。
VHDL和VerilogHDL主要區(qū)別在于邏輯表達的描述級別。VHDL雖
然也可以直接描述門電路,但這方面的能力卻不如VerilogHDL;相
反,VerilogHDL在高級建模描述方面不如VHDL。VeriIogHDL的描述
風(fēng)格接近于電路原理圖,從某種意義上說,它是電路原理圖的高級文
本表7r方式。
2.VHDL程序有哪些基本的部分?各部分起什么作用?
答:VHDL程序可以分為兩部分。第一部分主要用于描述電路的
“外部端口”,包括器件名稱、端口的名稱、數(shù)據(jù)類型等,稱為“實
體說明”;第二部分主要用于描述電路的內(nèi)部結(jié)構(gòu)、功能及其實現(xiàn)的
算法,稱為“結(jié)構(gòu)體”。
3.BIT數(shù)據(jù)類型和STD_L0GIC數(shù)據(jù)類型有何區(qū)別?
答:BIT是二進制位類型,其取值是一個1位的二進制數(shù),只能
是。或1。
STD_L0GIC是工業(yè)標(biāo)準(zhǔn)邏輯類型,取值有0、1、Z(高阻)、X(未
知)等9種,該數(shù)據(jù)類型由IEEE庫中的STD_L0GIC_1164程序包定義。
4.端口模式BUFFER與INOUT有何區(qū)別?
答:INOUT是雙向端口,既可以輸入信號,也可以輸出信號;而
BUFFER也可以輸出實體信號到外部,但作為輸入時,信號不是由外
部輸入,而是在實體內(nèi)由輸出信號反饋得到,即BUFFER模式的端口
在信號輸出實體的同時,也可以被實體本身讀入。
5.什么是庫和程序包?常用的庫和程序包有哪些?
答:在利用VHDL進行工程設(shè)計時,為了提高設(shè)計效率以及使設(shè)
計遵循某些統(tǒng)一的語言標(biāo)準(zhǔn)或數(shù)據(jù)格式,有必要將一些有用的信息匯
集在一個或幾個庫(LIBRARY)中,以供VHDL調(diào)用。常用的庫有IEEE
庫、STD庫和WORK庫。
6.什么是并行語句?什么是順序語句?二者有何區(qū)別?
答:在VHDL中,并行語句有多種語句格式,各種并行語句在結(jié)
構(gòu)體中的執(zhí)行都是同步進行的,或者說是并行運行的,其執(zhí)行的方式
與書寫的順序無關(guān)。這種并行性是由硬件本身的并行性決定的,即一
旦電路接通電源,它的各部分就會按照事先設(shè)計好的方案同時工作。
并行語句在執(zhí)行時,各并行語句之間可以有信息來往,也可以互為獨
立、互不相關(guān)。另外,每一并行語句內(nèi)部的語句可以有兩種不同的運
行方式,即并行執(zhí)行方式(如塊語句)和順序執(zhí)行方式(如進程語句)。
順序語句主要指的是語句的執(zhí)行(指仿真執(zhí)行)順序與其書寫順
序基本一致。但應(yīng)注意的是,這里的順序是對仿真軟件的運行或順應(yīng)
VHDL語法的編程思路而言的,其相應(yīng)的硬件邏輯工作方式未必如此。
順序語句只能出現(xiàn)在進程(PROCESS)中,而進程本身屬于并行
語句,這就是說在同一設(shè)計實體中,所有的進程都是并行執(zhí)行的,而
每一個進程內(nèi)部的語句是順序執(zhí)行的。
常用的順序語句有賦值語句、IF語句、CASE語句、LOOP語句和
NULL語句。
7.信號和變量有何區(qū)別?
答:(1)信號是全局量,是一個實體內(nèi)部各部分之間進行通信的
手段;而變量是局部量,只允許定義并作用于進程和子程序中。當(dāng)欲
把變量值帶出進程時,變量須首先賦給信號,然后由信號將其值帶出。
(2)信號的賦值采用符號“<二",而變量的賦值符號為“:二”。
(3)通常,變量的值可以傳遞給信號,而信號的值卻不能傳遞給
變量。
(4)在進程中,變量的賦值語句一旦被執(zhí)行,變量值立刻就被賦
予新值,在執(zhí)行下一條語句時,該變量就用新賦的值參與運算;而在
進程中的信號賦值語句,該語句雖然已被執(zhí)行,但新的信號值并沒有
被立即代入,因而在執(zhí)行下一條語句時,仍使用原來的信號值,直到
進程結(jié)束時,信號才根據(jù)最后一次的賦值被賦予新值。
(5)在結(jié)構(gòu)體的并行語句部分,若同一信號被賦值一次以上,則
編譯器將給出錯誤報告,指出該信號出現(xiàn)了兩個驅(qū)動源。在進程中,
若同一信號被賦值一次以上,則編譯器將給出警告,指出只有最后一
次賦值有效,而變量的賦值是立即發(fā)生的。
8.IF語句和CASE語句的使用效果有何不同?
答:與IF語句相比,CASE語句組的程序可讀性比較好,這是因
為它把條件中“表達式”的所有取值都列了出來,可執(zhí)行條件一目了
然。但對相同的邏輯功能描述,綜合后,用CASE語句描述比IF描述
耗用更多的硬件資源。因此,對本身就具有優(yōu)先邏輯關(guān)系的描述(如
優(yōu)先編碼器),采用IF語句比CASE語句更合適。
9.畫出與下例實體描述相對應(yīng)的原理圖符號。
(1)實體一
ENTITYbuf3sIS
PORT(input:INSTD_LOGIC;
enable:INSTD_LOGIC;
output:OUTSTD_LOGIC);
ENDbuf3s;
BUF3s
INPUTX-INPUTOUTPUT-XOUTPUT
ENRBLEX-ENABLE
(2)實體二
ENTITYmux21IS
PORT(inO,in1,sel:INSTD_LOGIC;
output:OUTSTD_LOGIC);
ENDmux21;
Muxei
XNOX-INO
INXX—IHXOUTPUT-XOUTPUT
SELASEL
10.修改下列程序中的錯誤。
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.修改下列語句中的錯誤。
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是一個含有上升沿觸發(fā)D觸發(fā)器的時序電路,試寫出
此電路的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、時序電路
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è)計
1.試設(shè)計一個將芯片內(nèi)的兩個節(jié)點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è)計一個4位并行奇校驗電路,設(shè)輸出為p。當(dāng)各輸入信號
同時輸入的邏輯'1'的個數(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è)計一個8位數(shù)補碼生成電路,設(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è)計一個5人表決器。(提示:設(shè)置5個輸入,1個輸出。
輸入變量為'1'時表示表決者贊同,反之表示反對。輸出變量為'1'
時表示表決通過,通過的條件是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è)計一個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è)計一個6位加法器,用于實現(xiàn)對兩個6位數(shù)的加法運算,
其功能見表474。
表4746位加法器功能表
輸入輸出
a[5..0]b[5..0]s[5..0]c
aba+b進位
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è)計一個具有異步置位/復(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è)計一個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è)計一個4位二進制數(shù)的可逆計數(shù)器,時鐘端為elk,計
數(shù)輸出端為q[3..O],計數(shù)方向控制端為dire。當(dāng)dire=1時做加法
計數(shù),當(dāng)dire=0時做減法計數(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描述同步十進制加法計數(shù)器芯片74LS160的功能,時
鐘端為elk,清零端為clr,預(yù)置數(shù)輸入端為d[3..0],預(yù)置數(shù)控制
端為Id,功能控制端為ep和et,計數(shù)輸出端為q[3..O],進位輸出
端為c。74LS160功能見表4-16。
表47674LS160功能表
cIkclrIdepet工作狀態(tài)
X0XXX置零
T10XX預(yù)置數(shù)
X1101保持
X11X0保持(c=0)
X1111計數(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è)計一個60進制的同步加法計數(shù)器,時鐘端為elk,計數(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è)計一個128進制的同步加法計數(shù)器,時鐘端為elk,計
數(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è)計實例
1.設(shè)計一個8X8發(fā)光點矩陣逐點掃描顯示控制電路,要求如下。
(1)光點從屏左上角像素點向右開始逐點逐行掃描,終止于右下
角像素點,然后重復(fù)上述過程;
(2)掃描一幀所需時間為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等.壓縮文件請下載最新的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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024物流配送員勞動協(xié)議3篇
- 2024版網(wǎng)絡(luò)游戲開發(fā)與運營權(quán)轉(zhuǎn)讓合同2篇
- 2024押證不押車商業(yè)地產(chǎn)項目貸款合同范本9篇
- 2025年度建筑安全評價與施工監(jiān)理一體化合同范本3篇
- 2025廠區(qū)食堂承包合同:廠區(qū)文化建設(shè)與餐飲服務(wù)融合協(xié)議3篇
- 二零二五版北京市金融行業(yè)勞動合同法實施標(biāo)準(zhǔn)2篇
- 2024離婚財產(chǎn)分割保險保障合同
- 2024施工現(xiàn)場環(huán)境信息公開與共享協(xié)議3篇
- 2025年MLB棒球帽定制加工及品牌合作框架協(xié)議3篇
- 2025年度智能制造生產(chǎn)線操作工勞動合同3篇 - 副本
- 2024版?zhèn)€人私有房屋購買合同
- 2025年山東光明電力服務(wù)公司招聘筆試參考題庫含答案解析
- 《神經(jīng)發(fā)展障礙 兒童社交溝通障礙康復(fù)規(guī)范》
- 2025年中建六局二級子企業(yè)總經(jīng)理崗位公開招聘高頻重點提升(共500題)附帶答案詳解
- 2024年5月江蘇省事業(yè)單位招聘考試【綜合知識與能力素質(zhì)】真題及答案解析(管理類和其他類)
- 注漿工安全技術(shù)措施
- 《食品與食品》課件
- 2024年世界職業(yè)院校技能大賽“食品安全與質(zhì)量檢測組”參考試題庫(含答案)
- 讀書分享會《白夜行》
- 2023上海高考英語詞匯手冊單詞背誦默寫表格(復(fù)習(xí)必背)
- 人民軍隊歷史與優(yōu)良傳統(tǒng)(2024)學(xué)習(xí)通超星期末考試答案章節(jié)答案2024年
評論
0/150
提交評論