EDA課后習(xí)題答案_第1頁(yè)
EDA課后習(xí)題答案_第2頁(yè)
EDA課后習(xí)題答案_第3頁(yè)
EDA課后習(xí)題答案_第4頁(yè)
EDA課后習(xí)題答案_第5頁(yè)
已閱讀5頁(yè),還剩42頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

第1章

EDA技術(shù)概述1精選可編輯ppt1-1EDA技術(shù)與ASIC設(shè)計(jì)和FPGA開(kāi)發(fā)有什么關(guān)系?FPGA在ASIC設(shè)計(jì)中有什么用途?答:EDA技術(shù)進(jìn)行電子系統(tǒng)設(shè)計(jì)的最后目標(biāo),是完成專(zhuān)用集成電路(ASIC)的設(shè)計(jì)和實(shí)現(xiàn),F(xiàn)PGA是實(shí)現(xiàn)這一途徑的主流器件,它們的特點(diǎn)是直接面向用戶(hù)、具有極大的靈活性和通用性、使用方便、硬件測(cè)試和實(shí)現(xiàn)快捷、開(kāi)發(fā)效率高、成本低、上市時(shí)間短、技術(shù)維護(hù)簡(jiǎn)單、工作可靠性好等。FPGA的應(yīng)用是EDA技術(shù)有機(jī)融合軟硬件電子設(shè)計(jì)技術(shù)、ASIC設(shè)計(jì),以及對(duì)自動(dòng)設(shè)計(jì)與自動(dòng)實(shí)現(xiàn)最典型的詮釋。

1-2與軟件描述語(yǔ)言相比,Verilog有什么特點(diǎn)?答:Verilog語(yǔ)言的特點(diǎn):(1)按照設(shè)計(jì)目的,Verilog程序可以劃分為面向仿真和面向綜合兩類(lèi),而可綜合的Verilog程序能分別面向FPGA和ASIC開(kāi)發(fā)兩個(gè)領(lǐng)域。(2)能在多個(gè)層次上對(duì)所設(shè)計(jì)的系統(tǒng)加以描述,從開(kāi)關(guān)級(jí)、門(mén)級(jí)、寄存器傳輸級(jí)(RTL)至行為級(jí)都可以加以描述。(3)靈活多樣的電路描述風(fēng)格。2精選可編輯ppt1-3什么是綜合?有哪些類(lèi)型?綜合在電子設(shè)計(jì)自動(dòng)化中的地位是什么?答:綜合(Synthesis),就其字面含義應(yīng)該是:把抽象的實(shí)體結(jié)合成單個(gè)或統(tǒng)一的實(shí)體。在電子設(shè)計(jì)領(lǐng)域,綜合的概念可以表述為:將用行為和功能層次表達(dá)的電子系統(tǒng)轉(zhuǎn)換為低層次的、便于具體實(shí)現(xiàn)的模塊組合裝配的過(guò)程。(1)從自然語(yǔ)言轉(zhuǎn)換到Verilog語(yǔ)言算法表述,即自然語(yǔ)言綜合。

(2)從算法表述轉(zhuǎn)換到寄存器傳輸級(jí)(RegisterTransportLevel,RTL)表述,即從行為域到結(jié)構(gòu)域的綜合,也稱(chēng)行為綜合。(3)從RTL級(jí)表述轉(zhuǎn)換到邏輯門(mén)(包括觸發(fā)器)的表述,即邏輯綜合。(4)從邏輯門(mén)表述轉(zhuǎn)換到版圖級(jí)表述(如ASIC設(shè)計(jì)),或轉(zhuǎn)換到FPGA的配置網(wǎng)表文件,可稱(chēng)為版圖綜合或結(jié)構(gòu)綜合。綜合器就是能夠?qū)⒁环N設(shè)計(jì)表述形式自動(dòng)向另一種設(shè)計(jì)表述形式轉(zhuǎn)換的計(jì)算機(jī)程序,或協(xié)助進(jìn)行手工轉(zhuǎn)換的程序。它可以將高層次的表述轉(zhuǎn)化為低層次的表述,可以將行為域轉(zhuǎn)化為結(jié)構(gòu)域,可以將高一級(jí)抽象的電路描述(如算法級(jí))轉(zhuǎn)化為低一級(jí)的電路描述(如門(mén)級(jí)),并可以用某種特定的“技術(shù)”(如CMOS)實(shí)現(xiàn)。

3精選可編輯ppt1-4IP在EDA技術(shù)的應(yīng)用和發(fā)展中的意義是什么?答:IP就是知識(shí)產(chǎn)權(quán)核或知識(shí)產(chǎn)權(quán)模塊的意思,在EDA技術(shù)和開(kāi)發(fā)中具有十分重要的地位。美國(guó)著名的Dataquest咨詢(xún)公司將半導(dǎo)體產(chǎn)業(yè)的IP定義為“用于ASIC或FPGA中的預(yù)先設(shè)計(jì)好的電路功能模塊”。IP分軟IP、固IP和硬IP。

軟IP是用HDL等硬件描述語(yǔ)言描述的功能塊,但是并不涉及用什么具體電路元件實(shí)現(xiàn)這些功能。

固IP是完成了綜合的功能塊。它有較大的設(shè)計(jì)深度,以網(wǎng)表文件的形式提交客戶(hù)使用。

硬IP提供設(shè)計(jì)的最終階段產(chǎn)品——掩模。隨著設(shè)計(jì)深度的提高,后續(xù)工序所需要做的事情就越少;當(dāng)然,靈活性也就越小。不同的客戶(hù)可以根據(jù)自己的需要訂購(gòu)不同的IP產(chǎn)品。4精選可編輯ppt1-5敘述EDA的FPGA/CPLD設(shè)計(jì)流程,以及涉及的EDA工具及其在整個(gè)流程中的作用。答:完整地了解利用EDA技術(shù)進(jìn)行設(shè)計(jì)開(kāi)發(fā)的流程對(duì)于正確地選擇和使用EDA軟件、優(yōu)化設(shè)計(jì)項(xiàng)目、提高設(shè)計(jì)效率十分有益。一個(gè)完整的、典型的EDA設(shè)計(jì)流程既是自頂向下設(shè)計(jì)方法的具體實(shí)施途徑,也是EDA工具軟件本身的組成結(jié)構(gòu)。

基于EDA的FPGA/CPLD開(kāi)發(fā)流程

5精選可編輯ppt1-6OLMC有何功能?說(shuō)明GAL是怎樣實(shí)現(xiàn)可編程組合電路與時(shí)序電路的。答:輸出邏輯宏單元(OutputLogicMacroCell,OLMC),此結(jié)構(gòu)使得PLD器件在組合邏輯和時(shí)序邏輯中的可編程或可重構(gòu)性能都成為可能。GAL16V8型號(hào)的器件,它包含了8個(gè)邏輯宏單元OLMC,每一個(gè)OLMC可實(shí)現(xiàn)時(shí)序電路可編程,而其左側(cè)的電路結(jié)構(gòu)是與陣列可編程的組合邏輯可編程結(jié)構(gòu)。

GAL的OLMC單元設(shè)有多種組態(tài),可配置成專(zhuān)用組合輸出、專(zhuān)用輸入、組合輸出雙向口、寄存器輸出、寄存器輸出雙向口等,為邏輯電路設(shè)計(jì)提供了極大的靈活性。

GAL的輸出邏輯宏單元OLMC中含有4個(gè)多路選擇器,通過(guò)不同的選擇方式可以產(chǎn)生多種輸出結(jié)構(gòu),分別屬于3種模式,一旦確定了某種模式,所有的OLMC都將工作在同一種模式下。圖1-14即為其中一種輸出模式對(duì)應(yīng)的結(jié)構(gòu)。圖1-14寄存器輸出結(jié)構(gòu)6精選可編輯ppt1-7什么是基于乘積項(xiàng)的可編程邏輯結(jié)構(gòu)?什么是基于查找表的可編程邏輯結(jié)構(gòu)?答:基于乘積項(xiàng)的可編程結(jié)構(gòu),即由可編程的“與”陣列和固定的“或”陣列組成。

可編程的查找表(LookUpTable,LUT)結(jié)構(gòu),LUT是可編程的最小邏輯構(gòu)成單元。大部分FPGA采用基于SRAM(靜態(tài)隨機(jī)存儲(chǔ)器)的查找表邏輯形成結(jié)構(gòu),即用SRAM來(lái)構(gòu)成邏輯函數(shù)發(fā)生器。一個(gè)N輸入LUT可以實(shí)現(xiàn)N個(gè)輸入變量的任何邏輯功能,如N輸入“與”、N輸入“異或”等。1-8就邏輯宏單元而言,GAL中的OLMC、CPLD中的LC、FPGA中的LUT和LE的含義和結(jié)構(gòu)特點(diǎn)是什么?它們都有何異同點(diǎn)?答:輸出邏輯宏單元(OutputLogicMacroCell,OLMC),此結(jié)構(gòu)使得PLD器件在組合邏輯和時(shí)序邏輯中的可編程或可重構(gòu)性能都成為可能。

MAX7000S系列器件包含32~256個(gè)邏輯宏單元(LogicCell,LC),其單個(gè)邏輯宏單元結(jié)構(gòu)如圖1-15所示。

LUT即可編程的查找表(LookUpTable,LUT)結(jié)構(gòu),是可編程的最小邏輯構(gòu)成單元。大部分FPGA采用基于SRAM(靜態(tài)隨機(jī)存儲(chǔ)器)的查找表邏輯形成結(jié)構(gòu),即用SRAM來(lái)構(gòu)成邏輯函數(shù)發(fā)生器。一個(gè)N輸入LUT可以實(shí)現(xiàn)N個(gè)輸入變量的任何邏輯功能,如N輸入“與”、N輸入“異或”等。

LE是CycloneIIIFPGA器件的最基本的可編程單元,LE主要由一個(gè)4輸入的查找表LUT、進(jìn)位鏈邏輯、寄存器鏈邏輯和一個(gè)可編程的寄存器構(gòu)成。

7精選可編輯ppt1-9為什么說(shuō)用邏輯門(mén)作為衡量邏輯資源大小的最小單元不準(zhǔn)確。答:專(zhuān)業(yè)習(xí)慣是將OLMC及左側(cè)的可編程與陣列合稱(chēng)一個(gè)邏輯宏單元,即標(biāo)志PLD器件邏輯資源的最小單元,由此可以認(rèn)為GAL16V8器件的邏輯資源是8個(gè)邏輯宏單元,而目前最大的FPGA的邏輯資源達(dá)數(shù)十萬(wàn)個(gè)邏輯宏單元。也有將邏輯門(mén)的數(shù)量作為衡量邏輯器件資源的最小單元,如某CPLD的資源約2000門(mén)等,但此類(lèi)劃分方法誤差較大。

1-10標(biāo)志FPGA/CPLD邏輯資源的邏輯宏單元包含哪些結(jié)構(gòu)?答:CPLD(MAX7000S)系列中的

邏輯宏單元由3個(gè)功能塊組成:邏輯陣列、乘積項(xiàng)選擇矩陣和可編程寄存器,它們可以被單獨(dú)地配置為時(shí)序邏輯和組合邏輯工作方式。其中邏輯陣列實(shí)現(xiàn)組合邏輯,可以給每個(gè)邏輯宏單元提供5個(gè)乘積項(xiàng)?!俺朔e項(xiàng)選擇矩陣”分配這些乘積項(xiàng)作為到“或門(mén)”和“異或門(mén)”的主要邏輯輸入,以實(shí)現(xiàn)組合邏輯函數(shù);或者把這些乘積項(xiàng)作為宏單元中寄存器的輔助輸入:清零(Clear)、置位(Preset)、時(shí)鐘(Clock)和時(shí)鐘使能控制(ClockEnable)。FPGA(CycloneIII)器件的可編程資源主要來(lái)自邏輯陣列塊LAB,而每個(gè)LAB都由多個(gè)邏輯宏單元(LogicElement,LE)構(gòu)成。LE是CycloneIIIFPGA器件的最基本的可編程單元,LE主要由一個(gè)4輸入的查找表LUT、進(jìn)位鏈邏輯、寄存器鏈邏輯和一個(gè)可編程的寄存器構(gòu)成。

8精選可編輯ppt1-11解釋編程與配置這兩個(gè)概念。答:基于電可擦除存儲(chǔ)單元的EEPROM或Flash技術(shù)。CPLD一般使用此技術(shù)進(jìn)行編程(Progam)。CPLD被編程后改變了電可擦除存儲(chǔ)單元中的信息,掉電后可保持。

Altera的FPGA器件有兩類(lèi)配置下載方式:主動(dòng)配置方式和被動(dòng)配置方式。主動(dòng)配置方式由FPGA器件引導(dǎo)配置操作過(guò)程,它控制著外部存儲(chǔ)器和初始化過(guò)程,而被動(dòng)配置方式則由外部計(jì)算機(jī)或控制器控制配置過(guò)程。對(duì)于SRAM型FPGA,在實(shí)用中必須利用專(zhuān)用配置器件來(lái)存儲(chǔ)編程信息,以便在上電后,該器件能對(duì)FPGA自動(dòng)編程配置。

EPC器件中的EPC2型號(hào)的器件是采用Flash存儲(chǔ)工藝制作的具有可多次編程特性的配置器件。

9精選可編輯ppt第2章

Verilog程序結(jié)構(gòu)與數(shù)據(jù)類(lèi)型10精選可編輯ppt習(xí)題

2-1wire型變量與reg型變量的什么本質(zhì)區(qū)別,它們可用于什么類(lèi)型語(yǔ)句中?答:書(shū)上P33~35《第2章Verilog程序結(jié)構(gòu)與數(shù)據(jù)類(lèi)型

》線網(wǎng)(wire)表示硬件單元之間的連接。就像在真實(shí)的電路中一樣,線網(wǎng)由其連接器件的輸出端連續(xù)驅(qū)動(dòng)。線網(wǎng)不能儲(chǔ)存值,而且它必須受到驅(qū)動(dòng)器(例如門(mén)或連續(xù)賦值語(yǔ)句,assign)的驅(qū)動(dòng)。如果沒(méi)有驅(qū)動(dòng)源,則線網(wǎng)的值為z。reg寄存器用來(lái)表示存儲(chǔ)元件,它保持原有的數(shù)值,通過(guò)賦值語(yǔ)句可以改變寄存器儲(chǔ)存的值,其作用與改變觸發(fā)器儲(chǔ)存的值相當(dāng)。reg類(lèi)型數(shù)據(jù)的默認(rèn)初始值為不定值x。定義為Net型的變量常被綜合為硬件電路中的物理連接,其特點(diǎn)是輸出的值緊跟輸入值的變化而變化,因此常被用來(lái)表示以assign關(guān)鍵詞引導(dǎo)的組合電路描述。Register類(lèi)型變量必須放在過(guò)程語(yǔ)句中,如initial、always引導(dǎo)的語(yǔ)句中,通過(guò)過(guò)程賦值語(yǔ)句(包括阻塞與非阻塞語(yǔ)句)完成賦值操作,換言之,在always和initial等過(guò)程結(jié)構(gòu)內(nèi)被賦值的變量必須定義成Variable類(lèi)型。11精選可編輯ppt2-3以下的標(biāo)符是否合法?XOR、or、74LS04、4Badder、\ASC、$SMD、A5加法器、BEGIN答:正確XOR、BEGIN、\ASC(還有一類(lèi)標(biāo)識(shí)符,即轉(zhuǎn)義標(biāo)識(shí)符(EscapedIdentifiers)。轉(zhuǎn)義標(biāo)識(shí)符以斜杠“\”開(kāi)頭,以空白符結(jié)尾,可以包含任何字符。例如,\8031、\-@Gt。)不正確74LS04、4Badder(起始為數(shù)字),A5加法器,or(關(guān)鍵詞),$SMD(任何標(biāo)識(shí)符必須以英文字母或下劃線開(kāi)頭。)2-2下列數(shù)字的表述方式是否正確?4’b-1101、6’sb010_1101、5’d82、’bx01、6’b10x101、10’d7、’HzD、-3’b101答:正確’bx01、6’b10x101、10’d7、’HzD、-3’b101不正確4’b-1101、6’sb010_1101、5’d82(1010010)注意:關(guān)鍵字都是小寫(xiě)的。如reg是關(guān)鍵字,但REG不屬于關(guān)鍵字,所以可用作普通標(biāo)識(shí)符。12精選可編輯ppt2-4定義以下的變量和常數(shù)。(1)定義一個(gè)名字為Q1的8位reg總線。(reg[7:0]Q1;)(2)定義一個(gè)名字為asg的整數(shù)。(

integenasg;)(3)定義參數(shù)s1=3’b010,s2=3’b110,s3=3’b011。

parameters1=3’b010,s2=3’b110,s3=3’b011;(4)定義一個(gè)容量(深度)為128,字長(zhǎng)為32位的存儲(chǔ)器,存儲(chǔ)器名是MEM32。(reg[31:0]mem[127:0]MEM32;)(5)定義一個(gè)名字為WBUS的16位wire總線。(wire[15:0]WBUS)2-5設(shè)“reg[3:0]A;reg[7:0]B;reg[15:0]C;”,(1)執(zhí)行賦值語(yǔ)句A<=8B’11011010后,A實(shí)際獲得賦值是多少?(1010)(2)執(zhí)行賦值語(yǔ)句A<=8H’3456后,A實(shí)際獲得賦值是多少?(6、0110)(3)執(zhí)行賦值語(yǔ)句C<=9和C<=-9,C分別獲得賦值是什么?什么類(lèi)型?

C<=9(0000_0000_0000_1001)無(wú)符整數(shù)、C<=-9(1111_1111_1111_0111)有符整數(shù)(4)執(zhí)行賦值語(yǔ)句B<=38后,B獲得賦值是什么?(0010_0110)什么類(lèi)型?無(wú)符整數(shù)13精選可編輯ppt第3章

Verilog行為語(yǔ)句

14精選可編輯ppt3-1討論always和initial異同點(diǎn)。答:Verilog支持兩種過(guò)程語(yǔ)句,即always和initial語(yǔ)句。通常情況下initial語(yǔ)句不可綜合,主要用于仿真程序中的初始化;always語(yǔ)句屬于可綜合語(yǔ)句,主要引導(dǎo)行為描述語(yǔ)句,使用頻度非常高。在一個(gè)Verilog程序模塊(module)中,always和initial語(yǔ)句被使用的次數(shù)沒(méi)有限制,即它們本身屬于并行執(zhí)行特征的語(yǔ)句。過(guò)程語(yǔ)句的基本格式如下:always@(敏感信號(hào)及敏感信號(hào)列表或表達(dá)式)包括塊語(yǔ)句的各類(lèi)行為語(yǔ)句Verilog的過(guò)程語(yǔ)句除always外,還有initial過(guò)程語(yǔ)句。其基本格式如下:initialbegin語(yǔ)句1;語(yǔ)句2;...end與always結(jié)構(gòu)不同,initial過(guò)程語(yǔ)句結(jié)構(gòu)中沒(méi)有敏感信號(hào)列表,即不帶觸發(fā)條件。initial過(guò)程中的塊語(yǔ)句沿時(shí)間方向軸只執(zhí)行一次。(always總是可以自動(dòng)執(zhí)行無(wú)限次)

initial語(yǔ)句通常用于仿真模塊中對(duì)激勵(lì)矢量的描述,或用于給寄存器變量賦初值,而在實(shí)際電路中,賦初值是沒(méi)有意義的。因此這是面向模擬仿真的過(guò)程語(yǔ)句,通常不能被綜合工具所接受,或在綜合時(shí)被忽略,但卻可以對(duì)存儲(chǔ)器加載初始化文件,這是可綜合行為。15精選可編輯ppt習(xí)題

3-2阻塞賦值和非阻塞賦值有何區(qū)別?在應(yīng)用中應(yīng)注意哪些問(wèn)題?

答:Verilog中,用普通等號(hào)“=”作為阻塞式賦值語(yǔ)句的賦值符號(hào),如y=b。Verilog中,用普通等號(hào)“<=”作為非阻塞式賦值語(yǔ)句的賦值符號(hào),如y<=b。阻塞式賦值的特點(diǎn)是,一旦執(zhí)行完當(dāng)前的賦值語(yǔ)句,賦值目標(biāo)變量y即刻獲得來(lái)自等號(hào)右側(cè)表達(dá)式的計(jì)算值。如果在一個(gè)塊語(yǔ)句中含有多條阻塞式賦值語(yǔ)句,則當(dāng)執(zhí)行到其中某條賦值語(yǔ)句時(shí),其他語(yǔ)句將禁止執(zhí)行,即如同被阻塞了一樣。非阻塞式賦值的特點(diǎn)是必須在塊語(yǔ)句執(zhí)行結(jié)束時(shí)才整體完成賦值操作。非阻塞的含義可以理解為在執(zhí)行當(dāng)前語(yǔ)句時(shí),對(duì)于塊中的其他語(yǔ)句的執(zhí)行情況一律不加限制,不加阻塞。這也可以理解為,在begin_end塊中的所有賦值語(yǔ)句都可以并行運(yùn)行。16精選可編輯ppt3-3用Verilog設(shè)計(jì)一個(gè)3-8譯碼器,要求分別用case語(yǔ)句和if_else語(yǔ)句。比較這兩種方式。17精選可編輯ppt

3-3用Verilog設(shè)計(jì)一個(gè)3-8譯碼器,要求分別用case語(yǔ)句和if_else語(yǔ)句。比較這兩種方式。moduledecoder3_8(G1,Y,G2,A,G3);inputG1,G2,G3;wireG1,G2,G3;input[2:0]A;wire[2:0]A;output[7:0]Y;reg[7:0]Y;regs;always@(A,G1,G2,G3)begins<=G2|G3;if(G1==0)Y<=8'b1111_1111;elseif(s)Y<=8'b1111_1111;elsecase(A)3'b000:Y=8'b11111110; 3'b001:Y=8'b11111101; 3'b010:Y=8'b11111011; 3'b011:Y=8'b11110111; 3'b100:Y=8'b11101111; 3'b101:Y=8'b11011111; 3'b110:Y=8'b10111111; 3'b111:Y=8'b01111111; default:Y=8'bxxxxxxxx;endcaseendendmodule18精選可編輯ppt

3-3用Verilog設(shè)計(jì)一個(gè)3-8譯碼器,要求分別用case語(yǔ)句和if_else語(yǔ)句。比較這兩種方式。moduledecoder3_8(G1,Y,G2,A,G3);inputG1,G2,G3;wireG1,G2,G3;input[2:0]A;wire[2:0]A;output[7:0]Y;reg[7:0]Y;regs;always@(A,G1,G2,G3)begins<=G2|G3;if(G1==0)Y<=8'b1111_1111;elseif(s)Y<=8'b1111_1111; elsebeginif(A==3'b000)Y=8'b11111110; elseif(A==3'b001)Y=8'b11111101; elseif(A==3'b010)Y=8'b11111011; elseif(A==3'b011)Y=8'b11110111; elseif(A==3'b100)Y=8'b11101111; elseif(A==3'b101)Y=8'b11011111; elseif(A==3'b110)Y=8'b10111111; elseif(A==3'b111)Y=8'b01111111; elseY=8'bxxxxxxxx;endendendmodule19精選可編輯ppt//測(cè)試文件,??部分請(qǐng)根據(jù)被測(cè)試的文件修改modulestimulus;reg[2:0]A;wire[7:0]Y;regG1,G2,G3;decoder3_8DUT(G1,Y,G2,A,G3);initialbegin$monitor($time,"A=%d,G1=%b,G2=%b,G3=%b,Y=%d\n",A,G1,G2,G3,Y);endinitialbeginG1=1;G2=1;G3=1;A=0;#10G2=0;G1=0;#10G2=0;G1=1;#10G2=1;G1=0;G3=0;#10G1=0;G1=1;G3=1;#10G1=0;G1=0;G3=0;#10G1=1;G2=0;G3=0;#50A=0;#50A=1;#50A=2;#50A=3;#50A=4;#50A=5;#50A=6;#50A=7;#50$finish;endendmodule20精選可編輯ppt習(xí)題

3-4圖3-26所示的是雙2選1多路選擇器構(gòu)成的電路MUXK。對(duì)于其中MUX21A,當(dāng)s=0和s=1時(shí),分別有y=a和y=b。試在一個(gè)模塊結(jié)構(gòu)中用兩個(gè)過(guò)程來(lái)表達(dá)此電路。答:參考實(shí)驗(yàn)1圖3-26含2選1多路選擇器的模塊moduleMUXK(a1,a2,a3,s0,s1,outy);inputa1,a2,a3,s0,s1;outputouty;wireouty;wiretmp;mux21au1(.a(a2),.b(a3),.s(s0),.y(tmp));mux21au2(.a(a1),.b(tmp),.s(s1),.y(outy));endmodule21精選可編輯ppt習(xí)題3-5給出一個(gè)4選1多路選擇器的Verilog描述。選通控制端有4個(gè)輸入:S0、S1、S2、S3。當(dāng)且僅當(dāng)S0=0時(shí):Y=A;S1=0時(shí):Y=B;S2=0時(shí):Y=C;S3=0時(shí):Y=D。moduleMUX41a(A,B,C,D,S0,S1,S2,S3,Y);outputY;//定義Y為輸出信號(hào)inputA,B,C,D;inputS0,S1,S2,S3;regY;//定義輸出端口信號(hào)Y為寄存器型變量always@(A,B,C,S0,S1,S2,S3)begin//塊語(yǔ)句起始if(S0==0)Y=A;//當(dāng)S0==0成立,即(S0==0)=1時(shí),Y=A;elseif(S1==0)Y=B;//當(dāng)(S1==1)為真,則Y=B;elseif(S2==0)Y=C;//當(dāng)(S2==2)為真,則Y=C;elseif(S3==0)Y=D;//當(dāng)(S3==3)為真,即Y=D;end//塊語(yǔ)句結(jié)束endmodule22精選可編輯ppt3-6利用if語(yǔ)句設(shè)計(jì)一個(gè)全加器。sum<=0;cout<=1;endelseif(ain

==0&&bin==0&&cin

==1)beginsum<=1;cout<=0;endelseif(ain

==1&&bin==0&&cin

==1)beginsum<=0;cout<=1;endelseif(ain

==0&&bin==1&&cin

==1)beginsum<=0;cout<=1;endelsebeginsum<=1;cout<=1;endendendmodule

`timescale1ns/1psmodulef_adder(ain,bin,cin,cout,sum);inputain,bin,cin;wireain,bin,cin;outputcout,sum;regcout,sum;always@(ainorbinorcin)beginif(ain

==0&&bin==0&&cin==0)beginsum<=0;cout<=0;endelseif(ain

==1&&bin==0&&cin==0)beginsum<=1;cout<=0;endelseif(ain

==0&&bin==1&&cin

==0)beginsum<=1;cout<=0;endelseif(ain

==1&&bin==1&&cin==0)begin

23精選可編輯ppt真值表為ainbincinsumcout00000001100101001101100101010111001111113-6利用if語(yǔ)句設(shè)計(jì)一個(gè)全加器。`timescale1ns/1psmodulef_adder(ain,bin,cin,cout,sum);inputain,bin,cin;wireain,bin,cin;outputcout,sum;regcout,sum;always@(ainorbinorcin)beginif(ain==0&&bin==0&&cin==0)beginsum<=0;cout<=0;endelseif((~ain&(bin^cin))|(ain&~bin&~cin))beginsum<=1;cout<=0;endelseif((ain&(bin^cin))|(~ain&bin&cin))beginsum<=0;cout<=1;endelsebeginsum<=1;cout<=1;endendendmodule

24精選可編輯ppt習(xí)題3-7設(shè)計(jì)一個(gè)求補(bǔ)碼的程序,輸入數(shù)據(jù)是一個(gè)有符號(hào)的8位二進(jìn)制數(shù)。//設(shè)計(jì)一個(gè)求補(bǔ)碼的程序,輸入數(shù)據(jù)是一個(gè)有符號(hào)的8位二進(jìn)制數(shù)moduleBinary_complement(a,b);//二進(jìn)制數(shù)補(bǔ)碼input[7:0]a;output[7:0]b;integeri;reg[7:0]d;reg[6:0]c;always@(a)beginif(a[7]==1)beginfor(i=0;i<7;i=i+1)c[i]=!a[i];d[7:0]={a[7],(c[6:0]+7'd1)};endelsed[7:0]=a[7:0];endassignb[7:0]=d[7:0];endmodule25精選可編輯ppt`timescale1ns/1ns`include"Binary_complement.v"modulestimulus;//測(cè)試模塊的名字reg[7:0]a;wire[7:0]b;Binary_complementmycount(a,b);//調(diào)用測(cè)試對(duì)象initialbegin//激勵(lì)信號(hào)定義a=1;#10a=2;#10a=-8'd8;#10a=127;#10a=255;#10$finish;end//定義結(jié)果顯示格式initial$monitor($time,"a=%b,b=%b\n",a,b);endmodule

3-7設(shè)計(jì)一個(gè)求補(bǔ)碼的程序,輸入數(shù)據(jù)是一個(gè)有符號(hào)的8位二進(jìn)制數(shù)。26精選可編輯ppt3-8設(shè)計(jì)一個(gè)格雷碼至二進(jìn)制數(shù)的轉(zhuǎn)換器。

格雷碼二進(jìn)制000000001001011010010011110100111101101110100111在一組數(shù)的編碼中,若任意兩個(gè)相鄰的代碼只有一位二進(jìn)制數(shù)不同,則稱(chēng)這種編碼為格雷碼(GrayCode),另外由于最大數(shù)與最小數(shù)之間也僅一位數(shù)不同,即“首尾相連”,因此又稱(chēng)循環(huán)碼或反射碼。格雷碼轉(zhuǎn)二進(jìn)制碼格雷碼轉(zhuǎn)換為二進(jìn)制碼:從左邊第二位起,將每一位與左邊一位解碼后的值“異或”,作為該解碼后的值(最左邊的一位依然不變)。27精選可編輯ppt3-8設(shè)計(jì)一個(gè)格雷碼至二進(jìn)制數(shù)的轉(zhuǎn)換器。

modulegry2bin(Gry,Bin);parameterlength=3;output[length-1:0]Bin;input[length-1:0]Gry;reg[length-1:0]Bin;integeri;always@(Gry)beginBin[length-1]=Gry[length-1];for(i=length-2;i>=0;i=i-1)Bin[i]=Bin[i+1]^Gry[i];endendmodule`timescale1ns/1ns`include"gry2bin.v"modulestimulus;reg[2:0]Gry;wire[2:0]Bin;gry2binmycount(Gry,Bin);initialbeginGry=3'b000;#10Gry=3'b001;#10Gry=3'b011;#10Gry=3'b010;#10Gry=3'b110;#10Gry=3'b111;#10Gry=3'b101;#10Gry=3'b100;#10$finish;endinitial$monitor($time,"Gry=%b,Bin=%b\n",Gry,Bin);endmodule28精選可編輯ppt習(xí)題

3-9用不同循環(huán)語(yǔ)句分別設(shè)計(jì)一個(gè)邏輯電路模塊,用以統(tǒng)計(jì)一8位二進(jìn)制數(shù)中含1的數(shù)量。

moduleStatistics8(sum,A);output[3:0]sum;input[7:0]A;reg[3:0]sum;integeri;always@(A)beginsum=0;for(i=0;i<=8;i=i+1)//for語(yǔ)句if(A[i])sum=sum+1;elsesum=sum;endendmodulemoduleStatistics8(sum,A);parameterS=4;output[3:0]sum;input[7:0]A;reg[3:0]sum;reg[2*S:1]TA;integeri;always@(A)beginTA=A;sum=0;repeat(2*S)beginif(TA[1])sum=sum+1;TA=TA>>1;endendendmodulerepeat循環(huán)語(yǔ)句for循環(huán)語(yǔ)句29精選可編輯pptmoduleStatistics8(sum,A);parameterS=8;output[3:0]sum;input[7:0]A;reg[S:1]AT;reg[3:0]sum;reg[S:0]CT;always@(A)beginAT={{S{1'b0}},A};sum=0;CT=S;while(CT>0)beginif(AT[1])sum=sum+1;elsesum=sum;beginCT=CT-1;AT=AT>>1;endendendendmodule

3-9用不同循環(huán)語(yǔ)句分別設(shè)計(jì)一個(gè)邏輯電路模塊,用以統(tǒng)計(jì)一8位二進(jìn)制數(shù)中含1的數(shù)量。

while循環(huán)語(yǔ)句30精選可編輯pptmodulevoter7(pass,vote);outputpass;input[6:0]vote;reg[2:0]sum;integeri;regpass;always@(vote)beginsum=0;for(i=0;i<=6;i=i+1)//for語(yǔ)句if(vote[i])sum=sum+1;if(sum[2])pass=1;//若超過(guò)4人贊成,則pass=1elsepass=0;endendmodule習(xí)題3-10用循環(huán)語(yǔ)句設(shè)計(jì)一個(gè)7人投票表決器。31精選可編輯ppt習(xí)題3-11Verilog設(shè)計(jì)一個(gè)4位4輸入最大數(shù)值檢測(cè)電路。//Verilog設(shè)計(jì)一個(gè)4位4輸入最大數(shù)值檢測(cè)電路moduleMaximum_value_detection(Mostlarge,a,b,c,d);//4位4輸入最大數(shù)值檢測(cè)電路output[3:0]Mostlarge;input[3:0]a,b,c,d;wire[3:0]sum1,sum2,sum3;assignsum1=(a>b)?a:b;assignsum2=(c>d)?c:d;assignMostlarge=(sum1>sum2)?sum1:sum2;endmodule32精選可編輯ppt3-12利用case語(yǔ)句設(shè)計(jì)一個(gè)加、減、乘、除4功能算術(shù)邏輯單元ALU,輸入的兩個(gè)操用數(shù)都是4位進(jìn)制數(shù);輸入的操作碼是兩位二進(jìn)制數(shù);輸出結(jié)果是8位二進(jìn)制數(shù)。為了便于記憶和調(diào)試,建議把操作碼用parameter定義為參數(shù)。moduleMUX_ALU(A,B,S,Y);output[7:0]Y;//定義Y為輸出信號(hào)input[3:0]A,B;input[1:0]S;

parameteradd=2'b00,reduce=2'b01,multiply=2'b10,Trad=2'b11;reg[7:0]Y;//定義輸出端口信號(hào)Y為寄存器型變量always@(A,B,S)begincase(S)2'b00:Y=A+B;2'b01:Y=A-B;2'b10:Y=A*B;2'b11:Y=A/B;default:Y=8'bxxxxxxxx;endcaseendendmodule33精選可編輯pptmodulestimulus;reg[3:0]A,B;reg[1:0]S;wire[7:0]Y;MUX_ALUr1(A,B,S,Y);initialbeginA=4'b0100;B=4'b0010;S=2'b00;#10S=2'b01;#10S=2'b10;#10S=2'b11;#10$finish; //????end//????initial$monitor($time,"S=%b,A=%b,B=%b,Y=%d,",S,A,B,Y);endmodule3-12利用case語(yǔ)句設(shè)計(jì)一個(gè)加、減、乘、除4功能算術(shù)邏輯單元ALU,輸入的兩個(gè)操用數(shù)都是4位進(jìn)制數(shù);輸入的操作碼是兩位二進(jìn)制數(shù);輸出結(jié)果是8位二進(jìn)制數(shù)。為了便于記憶和調(diào)試,建議把操作碼用parameter定義為參數(shù)。34精選可編輯ppt習(xí)題

3-13在Verilog設(shè)計(jì)中,給時(shí)序電路清零(復(fù)位)有兩種不同方法,它們是什么,如何實(shí)現(xiàn)?答:同步清零、異步清零,在過(guò)程語(yǔ)句敏感信號(hào)表中的邏輯表述posedgeCLK用于指明正向跳變,或negedge用于指明負(fù)向跳變實(shí)現(xiàn)

3-14哪一種復(fù)位方法必須將復(fù)位信號(hào)放在敏感信號(hào)表中?給出這兩種電路的Verilog描述。答:異步復(fù)位必須將復(fù)位信號(hào)放在敏感信號(hào)表中。同步清零:always@(posedgeCLK) //CLK上升沿啟動(dòng)Q<=D; //當(dāng)CLK有升沿時(shí)D被鎖入Q異步清零:always@(posedgeCLKornegedgeRST)begin//塊開(kāi)始if(!RST)Q<=0; //如果RST=0條件成立,Q被清0 elseif(EN)Q<=D; //在CLK上升沿處,EN=1,則執(zhí)行賦值語(yǔ)句 end //塊結(jié)束35精選可編輯ppt3-15舉例說(shuō)明,為什么使用條件敘述不完整的條件句能導(dǎo)致產(chǎn)生時(shí)序模塊的綜合結(jié)果?答:●當(dāng)CLK發(fā)生了電平變化,但是從1變到0。這時(shí)無(wú)論D是否變化,都將啟動(dòng)過(guò)程去執(zhí)行if語(yǔ)句;但此時(shí)CLK=0,無(wú)法執(zhí)行if語(yǔ)句,從而無(wú)法執(zhí)行賦值語(yǔ)句Q<=D,于是Q只能保持原值不變(這就意味著需要在設(shè)計(jì)模塊中引入存儲(chǔ)元件)?!癞?dāng)CLK沒(méi)有發(fā)生任何變化,且CLK一直為0,而敏感信號(hào)D發(fā)生了變化。這時(shí)也能啟動(dòng)過(guò)程,但由于CLK=0,無(wú)法執(zhí)行if語(yǔ)句,從而也就無(wú)法執(zhí)行賦值語(yǔ)句Q<=D,導(dǎo)致Q只能保持原值(這也意味著需要在設(shè)計(jì)模塊中引入存儲(chǔ)元件)。在以上兩種情況中,由于if語(yǔ)句不滿(mǎn)足條件,于是將跳過(guò)賦值表達(dá)式Q<=D,不執(zhí)行此賦值表達(dá)式而結(jié)束if語(yǔ)句和過(guò)程.對(duì)于這種語(yǔ)言現(xiàn)象,Velilog綜合器解釋為,對(duì)于不滿(mǎn)足條件,跳過(guò)賦值語(yǔ)句Q<=D不予執(zhí)行,即意味著保持Q的原值不變(保持前一次滿(mǎn)足if條件時(shí)Q被更新的值)。對(duì)于數(shù)字電路來(lái)說(shuō),當(dāng)輸入改變后試圖保持一個(gè)值不變,就意味著使用具有存儲(chǔ)功能的元件,就是必須引進(jìn)時(shí)序元件來(lái)保存Q中的原值,直到滿(mǎn)足if語(yǔ)句的判斷條件后才能更新Q中的值,于是便產(chǎn)生了時(shí)序元件。

moduleLATCH1(CLK,D,Q);outputQ;inputCLK,D;regQ;always@(DorCLK)if(CLK)Q<=D; //當(dāng)CLK=1時(shí)D被鎖入Qendmodule

36精選可編輯ppt3-16把例3-11中的RST和CLK在敏感信號(hào)中具有同樣的地位,從語(yǔ)句上解答,為什么綜合的結(jié)果是CLK成為邊沿觸發(fā)時(shí)鐘信號(hào),而RST成為電平控制信號(hào)?moduleDFF2(CLK,D,Q,RST,EN);//含異步清0和時(shí)鐘同步使能的D觸發(fā)器outputQ;inputCLK,D,RST,EN;regQ;always@(posedgeCLKornegedgeRST)begin//塊開(kāi)始if(!RST)Q<=0; //如果RST=0條件成立,Q被清0elseif(EN)Q<=D; //在CLK上升沿處,EN=1,則執(zhí)行賦值語(yǔ)句end //塊結(jié)束endmodule【例3-11】37精選可編輯ppt這里所謂的“異步”并非時(shí)序的異步,而是指獨(dú)立于時(shí)鐘控制的復(fù)位控制端,即在任何時(shí)刻,只要RST=0或1(“時(shí)鐘異步”)

,此D觸發(fā)器的輸出端即刻被清0,與時(shí)鐘的狀態(tài)無(wú)關(guān)。而時(shí)鐘使能EN的功能是,只有當(dāng)ED=1時(shí),時(shí)鐘上升沿才有效。(“時(shí)鐘同步”)

例3-11程序執(zhí)行過(guò)程是這樣的,無(wú)論CLK是否有跳變,只要RST有一個(gè)下降沿動(dòng)作,即刻啟動(dòng)過(guò)程執(zhí)行if語(yǔ)句,即執(zhí)行語(yǔ)句Q<=0,對(duì)Q清0,然后跳出if語(yǔ)句。此后如果RST一直保存為0,則無(wú)論是否有CLK的邊沿跳變信號(hào),Q恒輸出0,這就是RST的異步清0功能。如果RST一直為1,且CLK有一次上升沿,則必定執(zhí)行賦值操作Q<=D,從而更新Q值,否則將保持Q值不變(條件是RST==1)。

always@(posedgeCLKornegedgeRST)begin//塊開(kāi)始if(!RST)Q<=0; //如果RST=0條件成立,Q被清0 elseif(EN)Q<=D;38精選可編輯ppt3-17把例3-17改成一異步清0,同步時(shí)鐘使能和異步數(shù)據(jù)加載型8位二進(jìn)制加法計(jì)數(shù)器?!纠?-17】含有異步清0同步時(shí)鐘使能和同步數(shù)據(jù)加載功能的十進(jìn)制計(jì)數(shù)器moduleCNT10(CLK,RST,EN,LOAD,COUT,DOUT,DATA);inputCLK,RST,EN,LOAD;//時(shí)鐘,時(shí)鐘使能,復(fù)位,數(shù)據(jù)加載控制信號(hào)輸入口input[3:0]DATA;//4位并行加載數(shù)據(jù)輸入口output[3:0]DOUT;//計(jì)數(shù)數(shù)據(jù)輸出信號(hào)口outputCOUT;//計(jì)數(shù)進(jìn)位輸出regCOUT;

reg[3:0]Q1;assignDOUT=Q1;//將內(nèi)部寄存器的計(jì)數(shù)結(jié)果輸出至DOUTalways@(posedgeCLKornegedgeRSTornegedgeLOAD)//時(shí)序過(guò)程begin if(!RST)Q1<=0;//RST=0時(shí),對(duì)內(nèi)部寄存器單元異步清0

elseif(!LOAD)Q1<=DATA;//當(dāng)LOAD=0,異步向內(nèi)部寄存器加載數(shù)據(jù)

elseif(EN)begin//同步使能EN=1,則允許加載或計(jì)數(shù)

if(Q1<9)Q1<=Q1+1;//當(dāng)Q1小于9時(shí),允許累加

elseQ1<=4'b0000;//否則一個(gè)時(shí)鐘后清0返回初值 endendalways@(Q1)//組合電路之過(guò)程 if(Q1==4'h9)COUT=1'b1;//當(dāng)Q1=1001時(shí),COUT輸出進(jìn)位標(biāo)志1 elseCOUT=1'b0;

//否則,輸出進(jìn)位標(biāo)志0endmodule

39精選可編輯ppt3-18把例3-17改成一個(gè)16位二進(jìn)制加法計(jì)數(shù)器,將其進(jìn)位輸出COUT與異步數(shù)據(jù)加載控制LOAD連在一起,構(gòu)成一個(gè)自動(dòng)加載型16位二進(jìn)制加法計(jì)數(shù)器,也即一個(gè)16位可控的分頻器,給出其Verilog表述,并說(shuō)明工作原理。設(shè)輸入頻率fi=4MHz,輸出頻率fo=516.5±Hz(允許誤差±0.1Hz),16位加載數(shù)值=?moduleCNT10(CLK,RST,EN,LOAD,COUT,DOUT,DATA);inputCLK,RST,EN,LOAD;//時(shí)鐘,時(shí)鐘使能,復(fù)位,數(shù)據(jù)加載控制信號(hào)輸入口input[15:0]DATA;//4位并行加載數(shù)據(jù)輸入口output[15:0]DOUT;//計(jì)數(shù)數(shù)據(jù)輸出信號(hào)口outputCOUT;//計(jì)數(shù)進(jìn)位輸出reg[15:0]Q1;regCOUT;assignDOUT=Q1;//將內(nèi)部寄存器的計(jì)數(shù)結(jié)果輸出至DOUTalways@(posedgeCLKornegedgeRST)begin//時(shí)序過(guò)程 if(!RST)Q1<=0;//RST=0時(shí),對(duì)內(nèi)部寄存器單元異步清0 elseif(EN)begin//同步使能EN=1,則允許加載或計(jì)數(shù) if(!LOAD)Q1<=DATA;//當(dāng)LOAD=1,向內(nèi)部寄存器加載數(shù)據(jù) elseif(Q1<16'hFFFF)Q1<=Q1+1;//當(dāng)Q1小于9時(shí),允許累加 elseQ1<=16'h0000;//否則一個(gè)時(shí)鐘后清0返回初值 endendalways@(Q1)//組合電路之過(guò)程 if(Q1==16'hFFFF)COUT=1'b1;//當(dāng)Q1=1001時(shí),COUT輸出進(jìn)位標(biāo)志1 elseCOUT=1'b0;//否則,輸出進(jìn)位標(biāo)志0endmodule【例3-17】//含有異步清0同步時(shí)鐘使能和同步數(shù)據(jù)加載功能的十進(jìn)制計(jì)數(shù)(FFFF-7744=E1BF)40精選可編輯pptmoduleCNT10(CLK,RST,EN,COUT,DOUT);//LOAD,,LOAD,DATAinputCLK,RST,EN;//時(shí)鐘,時(shí)鐘使能,復(fù)位,數(shù)據(jù)加載控制信號(hào)輸入口//input[3:0]DATA;//4位并行加載數(shù)據(jù)輸入口output[3:0]DOUT;//計(jì)數(shù)數(shù)據(jù)輸出信號(hào)口outputCOUT;//計(jì)數(shù)進(jìn)位輸出regCOUT;reg[3:0]Q1;parameterDATA=5;assignDOUT=Q1;//將內(nèi)部寄存器的計(jì)數(shù)結(jié)果輸出至DOUTassignLOAD=~CO

溫馨提示

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

評(píng)論

0/150

提交評(píng)論