版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、第第1章章 EDA技術概述技術概述 1-1 EDA技術與ASIC設計和FPGA開發(fā)有什么關系?FPGA在ASIC設計中有什么用途?答:EDA技術進行電子系統(tǒng)設計的最后目標,是完成專用集成電路(ASIC)的設計和實現(xiàn),F(xiàn)PGA是實現(xiàn)這一途徑的主流器件,。FPGA的應用是EDA技術有機融合軟硬件電子設計技術、ASIC設計,以及對自動設計與自動實現(xiàn)最典型的詮釋。 1-2 與軟件描述語言相比,Verilog有什么特點?答:Verilog語言的特點:(1)按照設計目的,Verilog程序可以劃分為面向仿真和面向綜合兩類,而可綜合的Verilog程序能分別面向FPGA和ASIC開發(fā)兩個領域。(2)能在多個
2、層次上對所設計的系統(tǒng)加以描述,從開關級、門級、寄存器傳輸級(RTL)至行為級都可以加以描述。(3)靈活多樣的電路描述風格。1-3 什么是綜合?有哪些類型?綜合在電子設計自動化中的地位是什么?答:綜合(Synthesis),就其字面含義應該是:把抽象的實體結合成單個或統(tǒng)一的實體。 在電子設計領域,綜合的概念可以表述為:將用行為和功能層次表達的電子系統(tǒng)轉換為低層次的、便于具體實現(xiàn)的模塊組合裝配的過程。(1)從自然語言轉換到Verilog語言算法表述,即自然語言綜合。 (2)從算法表述轉換到寄存器傳輸級(Register Transport Level,RTL)表述,即從行為域到結構域的綜合,也稱行
3、為綜合。(3)從RTL級表述轉換到邏輯門(包括觸發(fā)器)的表述,即邏輯綜合。(4)從邏輯門表述轉換到版圖級表述(如ASIC設計),或轉換到FPGA的配置網(wǎng)表文件,可稱為版圖綜合或結構綜合。 綜合器就是能夠將一種設計表述形式自動向另一種設計表述形式轉換的計算機程序,或協(xié)助進行手工轉換的程序。它可以將高層次的表述轉化為低層次的表述,可以將行為域轉化為結構域,可以將高一級抽象的電路描述(如算法級)轉化為低一級的電路描述(如門級),并可以用某種特定的“技術”(如CMOS)實現(xiàn)。 1-4 IP在EDA技術的應用和發(fā)展中的意義是什么?答:IP就是知識產(chǎn)權核或知識產(chǎn)權模塊的意思,在EDA技術和開發(fā)中具有十分重
4、要的地位。美國著名的Dataquest咨詢公司將半導體產(chǎn)業(yè)的IP定義為“用于ASIC或FPGA中的預先設計好的電路功能模塊”。IP分軟IP、固IP和硬IP。 軟軟IPIP是用是用HDLHDL等硬件描述語言描述的功能塊,但是并不涉等硬件描述語言描述的功能塊,但是并不涉及用什么具體電路元件實現(xiàn)這些功能。及用什么具體電路元件實現(xiàn)這些功能。固固IPIP是完成了綜合的功能塊。它有較大的設計深度,以網(wǎng)是完成了綜合的功能塊。它有較大的設計深度,以網(wǎng)表文件的形式提交客戶使用。表文件的形式提交客戶使用。 硬硬IPIP提供設計的最終階段產(chǎn)品提供設計的最終階段產(chǎn)品掩模。隨著設計深度的掩模。隨著設計深度的提高,后續(xù)工
5、序所需要做的事情就越少;當然,靈活性也就越小。提高,后續(xù)工序所需要做的事情就越少;當然,靈活性也就越小。不同的客戶可以根據(jù)自己的需要訂購不同的不同的客戶可以根據(jù)自己的需要訂購不同的IPIP產(chǎn)品。產(chǎn)品。 1-5 敘述EDA的FPGA/CPLD設計流程,以及涉及的EDA工具及其在整個流程中的作用。答:完整地了解利用EDA技術進行設計開發(fā)的流程對于正確地選擇和使用EDA軟件、優(yōu)化設計項目、提高設計效率十分有益。一個完整的、典型的EDA設計流程既是自頂向下設計方法的具體實施途徑,也是EDA工具軟件本身的組成結構。 基于EDA的FPGA/CPLD開發(fā)流程 1-6 OLMC有何功能?說明GAL是怎樣實現(xiàn)可
6、編程組合電路與時序電路的。答:輸出邏輯宏單元(Output Logic Macro Cell,OLMC),此結構使得PLD器件在組合邏輯和時序邏輯中的可編程或可重構性能都成為可能。GAL16V8型號的器件,它包含了8個邏輯宏單元OLMC,每一個OLMC可實現(xiàn)時序電路可編程,而其左側的電路結構是與陣列可編程的組合邏輯可編程結構。 GAL的的OLMC單元設有多種組態(tài),可配置成專用組合輸出、專用輸單元設有多種組態(tài),可配置成專用組合輸出、專用輸入、組合輸出雙向口、寄存器輸出、寄存器輸出雙向口等,為邏輯電路設計入、組合輸出雙向口、寄存器輸出、寄存器輸出雙向口等,為邏輯電路設計提供了極大的靈活性。提供了極
7、大的靈活性。GAL的輸出邏輯宏單元的輸出邏輯宏單元OLMC中含有中含有4個多路選擇器,通過不同的選個多路選擇器,通過不同的選擇方式可以產(chǎn)生多種輸出結構,分別屬于擇方式可以產(chǎn)生多種輸出結構,分別屬于3種模式,一旦確定了某種模式,所種模式,一旦確定了某種模式,所有的有的OLMC都將工作在同一種模式下。圖都將工作在同一種模式下。圖1-14即為其中一種輸出模式對應的即為其中一種輸出模式對應的結構。結構。圖圖1-14 寄存器輸出結構寄存器輸出結構 1-7 什么是基于乘積項的可編程邏輯結構?什么是基于查找表的可編程邏輯結構?答:基于乘積項的可編程結構,即由可編程的“與”陣列和固定的“或”陣列組成。 可編程
8、的查找表(可編程的查找表(Look Up Table,LUT)結構,)結構,LUT是可編程的最小邏是可編程的最小邏輯構成單元。大部分輯構成單元。大部分FPGA采用基于采用基于SRAM(靜態(tài)隨機存儲器)的查找表邏(靜態(tài)隨機存儲器)的查找表邏輯形成結構,輯形成結構,。一個。一個N輸入輸入LUT可以實現(xiàn)可以實現(xiàn)N個輸入變量的任何邏輯功能,如個輸入變量的任何邏輯功能,如N輸入輸入“與與”、N輸入輸入“異或異或”等。等。 1-8 就邏輯宏單元而言,GAL中的OLMC、CPLD中的LC、FPGA中的LUT和LE的含義和結構特點是什么?它們都有何異同點?答:輸出邏輯宏單元(Output Logic Macr
9、o Cell,OLMC),此結構使得PLD器件在組合邏輯和時序邏輯中的可編程或可重構性能都成為可能。 MAX7000S系列器件包含32256個邏輯宏單元(Logic Cell,LC),其單個邏輯宏單元結構如圖1-15所示。 LUT即可編程的查找表(Look Up Table,LUT)結構,是可編程的最小邏輯構成單元。大部分FPGA采用基于SRAM(靜態(tài)隨機存儲器)的查找表邏輯形成結構,即用SRAM來構成邏輯函數(shù)發(fā)生器。一個N輸入LUT可以實現(xiàn)N個輸入變量的任何邏輯功能,如N輸入“與”、N輸入“異或”等。 LE是Cyclone III FPGA器件的最基本的可編程單元,LE主要由一個4輸入的查找
10、表LUT、進位鏈邏輯、寄存器鏈邏輯和一個可編程的寄存器構成。 1-9 為什么說用邏輯門作為衡量邏輯資源大小的最小單元不準確。答:專業(yè)習慣是將OLMC及左側的可編程與陣列合稱一個邏輯宏單元,即標志PLD器件邏輯資源的最小單元,由此可以認為GAL16V8器件的邏輯資源是8個邏輯宏單元,而目前最大的FPGA的邏輯資源達數(shù)十萬個邏輯宏單元。也有將邏輯門的數(shù)量作為衡量邏輯器件資源的最小單元,如某CPLD的資源約2000門等,但此類劃分方法誤差較大。 1-10 標志FPGA/CPLD邏輯資源的答: CPLD( MAX7000S)系列中的 邏輯宏單元由3個功能塊組成:邏輯陣列、乘積項選擇矩陣和可編程寄存器,
11、它們可以被單獨地配置為時序邏輯和組合邏輯工作方式。其中邏輯陣列實現(xiàn)組合邏輯,可以給每個邏輯宏單元提供5個乘積項?!俺朔e項選擇矩陣”分配這些乘積項作為到“或門”和“異或門”的主要邏輯輸入,以實現(xiàn)組合邏輯函數(shù);或者把這些乘積項作為宏單元中寄存器的輔助輸入:清零(Clear)、置位(Preset)、時鐘(Clock)和時鐘使能控制(Clock Enable)。FPGA(Cyclone III)器件的可編程資源主要來自邏輯陣列塊LAB,而每個LAB都由多個邏輯宏單元(Logic Element,LE)構成。LE是Cyclone III FPGA器件的最基本的可編程單元,LE主要由一個4輸入的查找表LU
12、T、進位鏈邏輯、寄存器鏈邏輯和一個可編程的寄存器構成。 1-11 解釋編程與配置這兩個概念。答:基于電可擦除存儲單元的EEPROM或Flash技術。CPLD一般使用此技術進行編程(Progam)。CPLD被編程后改變了電可擦除存儲單元中的信息,掉電后可保持。 AlteraAltera的的FPGAFPGA器件有兩類配置下載方式:主動配置方式和被動配器件有兩類配置下載方式:主動配置方式和被動配置方式。主動配置方式由置方式。主動配置方式由FPGAFPGA器件引導配置操作過程,它控制著外器件引導配置操作過程,它控制著外部存儲器和初始化過程,而被動配置方式則由外部計算機或控制器部存儲器和初始化過程,而被
13、動配置方式則由外部計算機或控制器控制配置過程??刂婆渲眠^程。 對于SRAM型FPGA,在實用中必須利用專用配置器件來存儲編程信息,以便在上電后,該器件能對FPGA自動編程配置。 EPC器件中的EPC2型號的器件是采用Flash存儲工藝制作的具有可多次編程特性的配置器件。 第第2章章 Verilog程序結構與數(shù)據(jù)類型程序結構與數(shù)據(jù)類型 習習 題題 答:書上答:書上P3335第第2章章 Verilog程序結構與數(shù)據(jù)類型程序結構與數(shù)據(jù)類型 線網(wǎng)線網(wǎng)(wire)表示硬件單元之間的連接。就像在真實的電路中一樣,線網(wǎng)由其表示硬件單元之間的連接。就像在真實的電路中一樣,線網(wǎng)由其連接器件的輸出端連續(xù)驅動。線網(wǎng)
14、不能儲存值,而且它必須受到驅動器連接器件的輸出端連續(xù)驅動。線網(wǎng)不能儲存值,而且它必須受到驅動器(例如門例如門或連續(xù)賦值語句,或連續(xù)賦值語句,assign)的驅動。如果沒有驅動源,則線網(wǎng)的值為的驅動。如果沒有驅動源,則線網(wǎng)的值為z。 reg寄存器用來表示存儲元件,它保持原有的數(shù)值,通過賦值語句可以改變寄存器用來表示存儲元件,它保持原有的數(shù)值,通過賦值語句可以改變寄存器儲存的值,其作用與改變觸發(fā)器儲存的值相當。寄存器儲存的值,其作用與改變觸發(fā)器儲存的值相當。reg類型數(shù)據(jù)的默認初始類型數(shù)據(jù)的默認初始值為不定值值為不定值x。 定義為定義為Net型的變量常被綜合為硬件電路中的物理連接,其特點是輸出的值
15、型的變量常被綜合為硬件電路中的物理連接,其特點是輸出的值緊跟輸入值的變化而變化,因此常被用來表示以緊跟輸入值的變化而變化,因此常被用來表示以assign關鍵詞引導的組合電路關鍵詞引導的組合電路描述。描述。 Register類型變量必須放在過程語句中,如類型變量必須放在過程語句中,如initial、always引導的語句中,引導的語句中,通過過程賦值語句通過過程賦值語句(包括阻塞與非阻塞語句包括阻塞與非阻塞語句)完成賦值操作,換言之,在完成賦值操作,換言之,在always和和initial等過程結構內被賦值的變量必須定義成等過程結構內被賦值的變量必須定義成Variable類型。類型。 2-3 2
16、-3 以下的標符是否合法?以下的標符是否合法?XORXOR、oror、74LS0474LS04、4Badder4Badder、ASCASC、$SMD$SMD、A5A5加法器、加法器、BEGINBEGIN答:正確答:正確XORXOR、 BEGIN BEGIN 、 ASC(ASC(還有一類標識符,即轉義標識符還有一類標識符,即轉義標識符(Escaped (Escaped Identifiers)Identifiers)。轉義標識符以斜杠。轉義標識符以斜杠“”開頭,以空白符結尾,可以包含任何字開頭,以空白符結尾,可以包含任何字符。例如,符。例如,80318031、-Gt-Gt。 ) )不正確不正確7
17、4LS0474LS04、4Badder(4Badder() ), A5A5加法器,加法器, or(or(關鍵詞關鍵詞) ), $SMD($SMD(。) )2-2 2-2 下列數(shù)字的表述方式是否正確?下列數(shù)字的表述方式是否正確?4b-11014b-1101、6sb010_11016sb010_1101、5d825d82、bx01bx01、6b10 x1016b10 x101、10d710d7、HzDHzD、- -3b1013b101答:正確答:正確bx01bx01、6b10 x1016b10 x101、10d710d7、HzDHzD、-3b101-3b101不正確不正確4b4b 11011101
18、、6sb6sb 10_110110_1101、5d82(5d82() )2-4 定義以下的變量和常數(shù)。定義以下的變量和常數(shù)。(1) 定義一個名字為定義一個名字為Q1的的8位位reg總線??偩€。 (2) 定義一個名字為定義一個名字為asg的整數(shù)。的整數(shù)。 (3) 定義參數(shù)定義參數(shù)s1=3b010,s2=3b110,s3=3b011。 (4) 定義一個容量定義一個容量(深度深度)為為128,字長為,字長為32位的存儲器,存儲器名是位的存儲器,存儲器名是MEM32。(5) 定義一個名字為定義一個名字為WBUS的的16位位wire總線??偩€。 2-5 2-5 設設“reg3:0A; reg7:0B;
19、reg15:0C;”,reg3:0A; reg7:0B; reg15:0C;”,(1) (1) 執(zhí)行賦值語句執(zhí)行賦值語句A=8B11011010A=8B11011010后,后,A A實際獲得賦值是多少?實際獲得賦值是多少?(2) (2) 執(zhí)行賦值語句執(zhí)行賦值語句A=8H3456A=8H3456后,后,A A實際獲得賦值是多少?實際獲得賦值是多少? (3) (3) 執(zhí)行賦值語句執(zhí)行賦值語句C=9C=9和和C=-9C=-9,C C分別獲得賦值是什么?什么類型?分別獲得賦值是什么?什么類型?C=9C=9C=-9C=-9(4) (4) 執(zhí)行賦值語句執(zhí)行賦值語句B=38B=38后,后,B B獲得賦值是什
20、么?獲得賦值是什么? 什么類型?什么類型?第第3章章 Verilog行為語句行為語句 3-1 3-1 討論討論alwaysalways和和initialinitial異同點。異同點。答:答: Verilog支持兩種過程語句,即支持兩種過程語句,即always和和initial語句。語句。通常情況下initial語句語句不可綜合,主要用于仿真程序中的初始化; always語句屬于語句屬于可綜合語句,主要引導行為描述語句,使用頻度非常高。在一個語句,主要引導行為描述語句,使用頻度非常高。在一個Verilog程程序模塊序模塊(module)中,中, always和和initial語句被使用的次數(shù)沒有
21、限制,即它語句被使用的次數(shù)沒有限制,即它們本身屬于并行執(zhí)行特征的語句。們本身屬于并行執(zhí)行特征的語句。 過程語句的基本格式如下:過程語句的基本格式如下: always(敏感信號及敏感信號列表或表達式敏感信號及敏感信號列表或表達式) 包括塊語句的各類行為語句包括塊語句的各類行為語句 VerilogVerilog的過程語句除的過程語句除alwaysalways外,還有外,還有initialinitial過程語句。其基本格式過程語句。其基本格式如下:如下: initialinitial begin begin語句語句1 1;語句;語句2 2;endend 與與alwaysalways結構不同,結構不同
22、,initialinitial過程語句結構中沒有敏感信號列表,即不過程語句結構中沒有敏感信號列表,即不帶觸發(fā)條件。帶觸發(fā)條件。initialinitial過程中的塊語句沿時間方向軸只執(zhí)行一次。過程中的塊語句沿時間方向軸只執(zhí)行一次。(always(always總是可以自動執(zhí)行無限次總是可以自動執(zhí)行無限次) ) initial語句通常用于仿真模塊中對激勵矢量的描述,或用于給寄存器變量賦初值,而在實際電路中,賦初值是沒有意義的。因此這是面向模擬仿真的過程語句,通常不能被綜合工具所接受,或在綜合時被忽略,但卻可以對存儲器加載初始化文件,這是可綜合行為。習習 題題 3-2 3-2 阻塞賦值和非阻塞賦值有
23、何區(qū)別?阻塞賦值和非阻塞賦值有何區(qū)別?在應用中應注意哪些問題?在應用中應注意哪些問題? 答:答:VerilogVerilog中,用普通等號中,用普通等號“=”=”作為阻塞式賦值語句的賦值符號,如作為阻塞式賦值語句的賦值符號,如y=by=b。 VerilogVerilog中,用普通等號中,用普通等號“=”=”作為非阻塞式賦值語句的賦值符號,如作為非阻塞式賦值語句的賦值符號,如y=by=b。 阻塞式賦值的特點是,一旦執(zhí)行完當前的賦值語句,賦值目標變量阻塞式賦值的特點是,一旦執(zhí)行完當前的賦值語句,賦值目標變量y y即刻即刻獲得來自等號右側表達式的計算值。如果在一個塊語句中含有多條阻塞式賦值獲得來自等
24、號右側表達式的計算值。如果在一個塊語句中含有多條阻塞式賦值語句,則當執(zhí)行到其中某條賦值語句時,其他語句將禁止執(zhí)行,即如同被阻塞語句,則當執(zhí)行到其中某條賦值語句時,其他語句將禁止執(zhí)行,即如同被阻塞了一樣。了一樣。 非阻塞式賦值的特點是必須在塊語句執(zhí)行結束時才整體完成賦值操作。非非阻塞式賦值的特點是必須在塊語句執(zhí)行結束時才整體完成賦值操作。非阻塞的含義可以理解為在執(zhí)行當前語句時,對于塊中的其他語句的執(zhí)行情況一阻塞的含義可以理解為在執(zhí)行當前語句時,對于塊中的其他語句的執(zhí)行情況一律不加限制,不加阻塞。這也可以理解為,在律不加限制,不加阻塞。這也可以理解為,在begin_endbegin_end塊中的所
25、有賦值語句都塊中的所有賦值語句都可以并行運行??梢圆⑿羞\行。 3-3 用用Verilog設計一個設計一個3-8譯碼器,要求分別用譯碼器,要求分別用case語句和語句和if_else語句。比語句。比較這兩種方式。較這兩種方式。 3-3 用用Verilog設計一個設計一個3-8譯碼器,要求分別用譯碼器,要求分別用case語句和語句和if_else語句。比較這兩種語句。比較這兩種方式。方式。module decoder3_8 ( G1 ,Y ,G2 ,A ,G3 );input G1, G2, G3;wire G1, G2, G3;input 2:0 A ;wire 2:0 A ;output 7:
26、0 Y ;reg 7:0 Y ;reg s;always ( A ,G1, G2, G3) begin s = G2 | G3 ; if (G1 = 0) Y = 8b1111_1111; else if (s) Y = 8b1111_1111; else case ( A ) 3b000: Y = 8b11111110; 3b001: Y = 8b11111101; 3b010: Y = 8b11111011; 3b011: Y = 8b11110111; 3b100: Y = 8b11101111; 3b101: Y = 8b11011111; 3b110: Y = 8b10111111;
27、 3b111: Y = 8b01111111; default:Y = 8bxxxxxxxx; endcase end endmodule 3-3 用用Verilog設計一個設計一個3-8譯碼器,要求分別用譯碼器,要求分別用case語句和語句和if_else語句。比較這兩種語句。比較這兩種方式。方式。module decoder3_8 ( G1 ,Y ,G2 ,A ,G3 ); input G1, G2, G3; wire G1, G2, G3; input 2:0 A ; wire 2:0 A ; output 7:0 Y ; reg 7:0 Y ; reg s; always ( A ,G
28、1, G2, G3) begin s = G2 | G3 ; if (G1 = 0) Y = 8b1111_1111; else if (s) Y = 8b1111_1111; else begin if (A=3b000)Y=8b11111110; else if (A=3b001)Y=8b11111101; else if (A=3b010)Y=8b11111011; else if (A=3b011)Y=8b11110111; else if (A=3b100)Y=8b11101111; else if (A=3b101)Y=8b11011111; else if (A=3b110)Y=
29、8b10111111; else if (A=3b111)Y=8b01111111; else Y=8bxxxxxxxx;end endendmodule/測試文件,測試文件,?部分請根據(jù)被測試的文件修改部分請根據(jù)被測試的文件修改module stimulus; reg 2:0A ; wire7:0Y ; reg G1 ,G2 ,G3; decoder3_8 DUT ( G1 ,Y ,G2 ,A ,G3 ); initial begin $monitor($time,A=%d,G1=%b,G2=%b, G3=%b,Y= %dn,A, G1, G2, G3, Y); endinitial beg
30、in G1=1 ;G2=1 ;G3=1;A=0; #10 G2=0;G1=0; #10 G2=0;G1=1;#10 G2=1;G1=0;G3=0; #10 G1=0;G1=1;G3=1; #10 G1=0;G1=0;G3=0; #10 G1=1;G2=0;G3=0; #50 A= 0; #50 A= 1; #50 A= 2; #50 A= 3; #50 A= 4; #50 A= 5; #50 A= 6; #50 A= 7; #50 $finish; endendmodule習習 題題 3-4圖圖3-26所示的是雙所示的是雙2選選1多路選擇器構成的電路多路選擇器構成的電路MUXK。對于其中。對于
31、其中MUX21A,當,當s=0和和s=1時,分別有時,分別有y=a和和y=b。試在一個模塊結構中用兩個過程來表達此電路。試在一個模塊結構中用兩個過程來表達此電路。答:參考實驗答:參考實驗1圖圖3-26 含含2選選1多路選擇器的模塊多路選擇器的模塊module MUXK (a1, a2, a3, s0, s1, outy); input a1, a2, a3, s0, s1; output outy; wire outy; wire tmp; mux21a u1 (.a(a2),.b(a3),.s(s0),.y(tmp); mux21a u2 (.a (a1),.b (tmp),.s(s1),.
32、y(outy);endmodule習習 題題3-5 給出一個給出一個4選選1多路選擇器的多路選擇器的Verilog描述。選通控制端有描述。選通控制端有4個輸入:個輸入:S0、S1、S2、S3。當且僅當。當且僅當S0=0時:時:Y=A;S1=0時:時:Y=B;S2=0時:時:Y=C;S3=0時:時:Y=D。module MUX41a (A,B,C,D,S0,S1,S2,S3,Y); output Y; /定義定義Y為輸出信號為輸出信號 input A, B, C, D; input S0,S1,S2,S3; reg Y; /定義輸出端口信號定義輸出端口信號Y為寄存器型變量為寄存器型變量 alwa
33、ys (A,B,C,S0,S1,S2,S3 )begin /塊語句起始塊語句起始 if (S0=0)Y=A; /當當S0 =0成立,即成立,即(S0 =0)=1時,時,Y=A; else if (S1=0)Y=B; /當當(S1 =1)為真,則為真,則Y=B; else if (S2=0)Y=C; /當當(S2 =2)為真,則為真,則Y=C; else if (S3=0) Y=D; /當當(S3 =3)為真,即為真,即Y=D; end /塊語句結束塊語句結束endmodule sum = 0; cout = 1; end else if (ain = 0 & bin = 0 & cin = 1
34、 ) begin sum = 1; cout = 0; end else if (ain = 1 & bin = 0 & cin = 1 ) begin sum = 0; cout = 1; end else if (ain = 0 & bin = 1 & cin = 1 ) begin sum = 0; cout = 1; end else begin sum = 1; cout = 1; end end endmodule timescale 1 ns / 1 ps module f_adder ( ain,bin,cin,cout,sum); input ain,bin,cin; wir
35、e ain,bin,cin; output cout,sum; reg cout,sum; always (ain or bin or cin) begin if (ain = 0 & bin = 0 & cin = 0 ) begin sum = 0; cout = 0; end else if (ain = 1 & bin = 0 & cin = 0 ) begin sum = 1; cout = 0; end else if (ain = 0 & bin = 1 & cin = 0 ) begin sum = 1; cout = 0; end else if (ain =1 & bin
36、= 1 & cin = 0 ) begin 真值表為ainbincinsumcout0000000110010100110110010101011100111111timescale 1 ns / 1 ps module f_adder ( ain,bin,cin,cout,sum); input ain,bin,cin; wire ain,bin,cin; output cout,sum; reg cout,sum; always (ain or bin or cin) begin if (ain = 0 & bin = 0 & cin = 0 ) begin sum = 0;cout =
37、0;end else if (ain&(bincin)|(ain&bin&cin) begin sum = 1;cout = 0;end else if (ain&(bincin)|(ain&bin&cin) begin sum =0 ;cout =1 ;end else begin sum = 1;cout = 1;end end endmodule 習習 題題3-7 3-7 設計一個求補碼的程序,輸入數(shù)據(jù)是一個有符號的設計一個求補碼的程序,輸入數(shù)據(jù)是一個有符號的8 8位二進制數(shù)。位二進制數(shù)。/設計一個求補碼的程序,輸入數(shù)據(jù)是一個有符號的設計一個求補碼的程序,輸入數(shù)據(jù)是一個有符號的8 8位二
38、進制數(shù)位二進制數(shù)module Binary_complement(a,b); /module Binary_complement(a,b); /二進制數(shù)補碼二進制數(shù)補碼input 7:0 a;input 7:0 a;output 7:0 b;output 7:0 b;integer i;integer i;reg 7:0d;reg 7:0d;reg 6:0c;reg 6:0c;always (a) always (a) beginbegin if(a7=1) if(a7=1) begin begin for(i=0;i7;i=i+1)ci=!ai; for(i=0;i7;i=i+1)ci=!a
39、i; d7:0=a7,(c6:0+7d1); d7:0=a7,(c6:0+7d1); end end else d7:0=a7:0; else d7:0=a7:0;endendassign b7:0=d7:0;assign b7:0=d7:0;endmoduleendmoduletimescale 1ns/1ns include Binary_complement.v module stimulus; /測試模塊的名字 reg7:0 a;wire7:0b;Binary_complement mycount(a,b);/調用測試對象 initialbegin /激勵信號定義 a=1;#10 a=
40、2;#10 a=-8d8;#10 a=127;#10 a=255;#10 $finish; end /定義結果顯示格式 initial $monitor($time,a=%b, b=%bn, a,b); endmodule 3-7 設計一個求補碼的程序,輸入數(shù)據(jù)是一個有符號的設計一個求補碼的程序,輸入數(shù)據(jù)是一個有符號的8位二進制數(shù)。位二進制數(shù)。3-8 3-8 設計一個格雷碼至二進制數(shù)的轉換器。設計一個格雷碼至二進制數(shù)的轉換器。 格雷碼二進制000000001001011010010011110100111101101110100111 在一組數(shù)的編碼中,若任意兩個相鄰的代碼只有一位二進制數(shù)不同
41、,則稱這種編碼為格雷碼(格雷碼(Gray Code),另外由于最大數(shù)與最小數(shù)之間也僅一位數(shù)不同,即“首尾相連”,因此又稱循循環(huán)碼或反射碼。環(huán)碼或反射碼。 3-8 3-8 設計一個格雷碼至二進制數(shù)的轉換器。設計一個格雷碼至二進制數(shù)的轉換器。 timescale 1ns/1ns include gry2bin.v module stimulus; reg2:0 Gry;wire2:0Bin;gry2bin mycount(Gry,Bin); initialbegin Gry=3b000;#10 Gry=3b001;#10 Gry=3b011;#10 Gry=3b010;#10 Gry=3b110;
42、#10 Gry=3b111;#10 Gry=3b101;#10 Gry=3b100;#10 $finish; end initial $monitor($time,Gry=%b, Bin=%bn,Gry,Bin); endmodule 習習 題題 3-9 用不同循環(huán)語句分別設計一個邏輯電路模塊,用以統(tǒng)計一用不同循環(huán)語句分別設計一個邏輯電路模塊,用以統(tǒng)計一8位二進制數(shù)中含位二進制數(shù)中含1的的數(shù)量。數(shù)量。 module Statistics8(sum,A);output3:0sum;input7:0 A;reg3:0 sum;integer i; always (A) begin sum=0; f
43、or(i=0;i1; end endendmoduleforfor循環(huán)語句循環(huán)語句module Statistics8(sum,A); parameter S=8; output3:0sum; input7:0 A; regS:1 AT; reg3:0 sum; regS:0 CT; always (A) begin AT=S1b0,A; sum=0; CT=S; while(CT0) begin if(AT1)sum=sum+1;else sum=sum; begin CT= CT-1; AT=AT1; end end end endmodule 3-9 3-9 用不同循環(huán)語句分別設計一個邏
44、輯電路模塊,用以統(tǒng)計一用不同循環(huán)語句分別設計一個邏輯電路模塊,用以統(tǒng)計一8 8位二進制數(shù)位二進制數(shù)中含中含1 1的數(shù)量。的數(shù)量。 module module voter7(pass,vote);output output pass;inputinput6:0 vote;regreg2:0 sum;integer integer i; reg reg pass;always always (vote) begin begin sum=0; for for(i=0;ib)?a:b;assign sum2=(cd)?c:d;assign Mostlarge=(sum1sum2)?sum1:sum2;
45、endmodule3-12 3-12 利用利用casecase語句設計一個加、減、乘、除語句設計一個加、減、乘、除4 4功能算術邏輯單元功能算術邏輯單元ALUALU,輸入的,輸入的兩個操用數(shù)都是兩個操用數(shù)都是4 4位進制數(shù);輸入的操作碼是兩位二進制數(shù);輸出結果是位進制數(shù);輸入的操作碼是兩位二進制數(shù);輸出結果是8 8位位二進制數(shù)。為了便于記憶和調試,建議把操作碼用二進制數(shù)。為了便于記憶和調試,建議把操作碼用parameterparameter定義為參數(shù)。定義為參數(shù)。 module MUX_ ALU (A,B,S,Y); output 7:0 Y; /定義定義Y為輸出信號為輸出信號 input 3
46、:0 A, B; input 1:0 S; parameter add = 2b00, reduce = 2b01, multiply = 2b10, Trad = 2b11; reg 7:0Y; /定義輸出端口信號定義輸出端口信號Y為寄存器型變量為寄存器型變量 always (A,B,S ) begin case (S ) 2b00: Y = A+B; 2b01: Y = A-B; 2b10: Y = A*B; 2b11: Y = A/B; default: Y = 8bxxxxxxxx; endcase end endmodule module stimulus;reg 3:0A,B;re
47、g 1:0S;wire7:0 Y;MUX_ALU r1(A,B,S,Y);initialbeginA=4b0100;B=4b0010;S=2b00;#10 S=2b01;#10 S=2b10;#10 S=2b11;#10 $finish;/?end/?initial$monitor($time, S=%b, A=%b, B=%b,Y=%d, S, A, B,Y);endmodule3-12 3-12 利用利用casecase語句設計一個加、減、乘、除語句設計一個加、減、乘、除4 4功能算術邏輯單元功能算術邏輯單元ALUALU,輸入的,輸入的兩個操用數(shù)都是兩個操用數(shù)都是4 4位進制數(shù);輸入的操作
48、碼是兩位二進制數(shù);輸出結果是位進制數(shù);輸入的操作碼是兩位二進制數(shù);輸出結果是8 8位位二進制數(shù)。為了便于記憶和調試,建議把操作碼用二進制數(shù)。為了便于記憶和調試,建議把操作碼用parameterparameter定義為參數(shù)。定義為參數(shù)。 習習 題題 3-13 3-13 在在VerilogVerilog設計中,給時序電路清零(復位)有兩種不同方法,它們設計中,給時序電路清零(復位)有兩種不同方法,它們是什么,如何實現(xiàn)?是什么,如何實現(xiàn)?答:同步清零、異步清零,在過程語句敏感信號表中的邏輯表述答:同步清零、異步清零,在過程語句敏感信號表中的邏輯表述posedge CLKposedge CLK用用于指
49、明正向跳變,或于指明正向跳變,或negedgenegedge用于指明負向跳變實現(xiàn)用于指明負向跳變實現(xiàn) 3-14 3-14 哪一種復位方法必須將復位信號放在敏感信號表中?給出這兩種電路的哪一種復位方法必須將復位信號放在敏感信號表中?給出這兩種電路的VerilogVerilog描述。描述。答:異步復位必須將復位信號放在敏感信號表中。答:異步復位必須將復位信號放在敏感信號表中。always (posedge CLK) always (posedge CLK) /CLK/CLK上升沿啟動上升沿啟動 Q=D; Q=D; /當當CLKCLK有升沿時有升沿時D D被鎖入被鎖入Q Qalways (posed
50、ge CLK or always (posedge CLK or negedge RSTnegedge RST) begin ) begin /塊開始塊開始 if(!RST)Q=0; if(!RST)Q=0; /如果如果RST=0RST=0條件成立,條件成立,Q Q被清被清0 0else if(EN) Q=D;else if(EN) Q=D;/在在CLKCLK上升沿處,上升沿處,EN=1EN=1,則執(zhí)行賦值語句,則執(zhí)行賦值語句endend /塊結束塊結束 3-15 舉例說明,為什么使用條件敘述不完整的條件句能導致產(chǎn)生時序模塊的綜合結果?舉例說明,為什么使用條件敘述不完整的條件句能導致產(chǎn)生時序模
51、塊的綜合結果?答:答: 當CLK發(fā)生了電平變化,但是從1變到0。這時無論D是否變化,都將啟動過程去執(zhí)行if語句;但此時CLK=0,無法執(zhí)行if語句,從而無法執(zhí)行賦值語句Q=D,于是Q只能保持原值不變(這就意味著需要在設計模塊中引入存儲元件)。 當CLK沒有發(fā)生任何變化,且CLK一直為0,而敏感信號D發(fā)生了變化。這時也能啟動過程,但由于CLK=0,無法執(zhí)行if語句,從而也就無法執(zhí)行賦值語句Q=D,導致Q只能保持原值(這也意味著需要在設計模塊中引入存儲元件)。 在以上兩種情況中,由于if語句不滿足條件,于是將跳過賦值表達式Q=D,不執(zhí)行此賦值表達式而結束if語句和過程對于這種語言現(xiàn)象,Velilo
52、g綜合器解釋為,對于不滿足條件,跳過賦值語句Q=D不予執(zhí)行,即意味著保持Q的原值不變(保持前一次滿足if條件時Q被更新的值)。對于數(shù)字電路來說,當輸入改變后試圖保持一個值不變,就意味著使用具有存儲功能的元件,就是必須引進時序元件來保存Q中的原值,直到滿足if語句的判斷條件后才能更新Q中的值,于是便產(chǎn)生了時序元件。 module LATCH1 (CLK, D, Q); output Q; input CLK, D; reg Q; always (D or CLK) if(CLK)Q=D; /當CLK=1時D被鎖入Qendmodule 3-16 3-16 把例把例3-113-11中的中的RSTRS
53、T和和CLKCLK在敏感信號中具有同樣的地位,在敏感信號中具有同樣的地位,從語句上解答,為什么綜合的結果是從語句上解答,為什么綜合的結果是CLKCLK成為邊沿觸發(fā)時鐘信成為邊沿觸發(fā)時鐘信號,而號,而RSTRST成為電平控制信號?成為電平控制信號?module DFF2 (CLK, D, Q,RST,EN); /含異步清含異步清0和時鐘同步使能的和時鐘同步使能的D觸發(fā)器觸發(fā)器 output Q; input CLK, D,RST,EN; reg Q; always (posedge CLK or negedge RST) begin /塊開始塊開始 if(!RST)Q=0; /如果如果RST=0
54、條件成立,條件成立,Q被清被清0 else if(EN) Q=D; /在在CLK上升沿處,上升沿處,EN=1,則執(zhí)行賦值語句,則執(zhí)行賦值語句 end /塊結束塊結束endmodule【例【例3-11】 這里所謂的并非時序的異步,而是指獨立于時鐘控制的復位控制端,即在任何時刻,只要RST=0或1 ,此D觸發(fā)器的輸出端即刻被清0,與時鐘的狀態(tài)無關。而時鐘使能EN的功能是,只有。(“”) 例3-11程序執(zhí)行過程是這樣的,無論CLK是否有跳變,只要RST有一個下降沿動作,即刻啟動過程執(zhí)行if語句,即執(zhí)行語句Q=0,對Q清0,然后跳出if語句。此后如果RST一直保存為0,則無論是否有CLK的邊沿跳變信號
55、,Q恒輸出0,這就是RST的異步清0功能。如果RST一直為1,且CLK有一次上升沿,則必定執(zhí)行賦值操作Q=D,從而更新Q值,否則將保持Q值不變(條件是RST=1)。 always (posedge CLK or negedge RST) begin /塊開始塊開始 if(!RST)Q=0; /如果如果RST=0條件成立,條件成立,Q被清被清0else if(EN) Q=D;3-17 把例把例3-17改成一異步清改成一異步清0,同步時鐘使能和異步數(shù)據(jù)加載型,同步時鐘使能和異步數(shù)據(jù)加載型8位二進制位二進制加法計數(shù)器。加法計數(shù)器。【例3-17】含有異步清0同步時鐘使能和同步數(shù)據(jù)加載功能的十進制計數(shù)器
56、module CNT10(CLK, RST, EN,LOAD,COUT,DOUT,DATA);input CLK, RST, EN,LOAD; /時鐘,時鐘使能,復位,數(shù)據(jù)加載控制信號輸入口input 3:0DATA; /4位并行加載數(shù)據(jù)輸入口output 3:0 DOUT; /計數(shù)數(shù)據(jù)輸出信號口output COUT; /計數(shù)進位輸出reg COUT; reg3:0 Q1;assign DOUT=Q1; /將內部寄存器的計數(shù)結果輸出至DOUTalways (posedge CLK or negedge RST ) /時序過程 beginif(!RST)Q1=0; /RST=0時,對內部寄存器
57、單元異步清0 /當LOAD=0,異步向內部寄存器加載數(shù)據(jù) /同步使能EN=1,則允許加載或計數(shù) /當Q1小于9時,允許累加 /否則一個時鐘后清0返回初值end endalways (Q1) /組合電路之過程if(Q1=4h9)COUT=1b1; /當Q1=1001時,COUT輸出進位標志1else COUT=1b0; /否則,輸出進位標志0endmodule 3-18 把例把例3-17改成一個改成一個16位二進制加法計數(shù)器,將其進位輸出位二進制加法計數(shù)器,將其進位輸出COUT與異步數(shù)與異步數(shù)據(jù)加載控制據(jù)加載控制LOAD連在一起,構成一個自動加載型連在一起,構成一個自動加載型16位二進制加法計數(shù)
58、器,也即位二進制加法計數(shù)器,也即一個一個16位可控的分頻器,給出其位可控的分頻器,給出其Verilog表述,并說明工作原理。設輸入頻率表述,并說明工作原理。設輸入頻率fi=4MHz,輸出頻率輸出頻率fo=516.5Hz(允許誤差允許誤差0.1Hz),16位加載數(shù)值位加載數(shù)值=?module CNT10(CLK, RST, EN,LOAD,COUT,DOUT,DATA);module CNT10(CLK, RST, EN,LOAD,COUT,DOUT,DATA);input CLK, RST, EN,LOAD; input CLK, RST, EN,LOAD; /時鐘,時鐘使能,復位,數(shù)據(jù)加載控
59、制信號輸入口時鐘,時鐘使能,復位,數(shù)據(jù)加載控制信號輸入口input input 15:015:0DATA; DATA; /4/4位并行加載數(shù)據(jù)輸入口位并行加載數(shù)據(jù)輸入口output output 15:015:0 DOUT; DOUT; /計數(shù)數(shù)據(jù)輸出信號口計數(shù)數(shù)據(jù)輸出信號口output COUT; output COUT; /計數(shù)進位輸出計數(shù)進位輸出regreg15:0 Q1; Q1;assign DOUT=Q1; assign DOUT=Q1; /將內部寄存器的計數(shù)結果輸出至將內部寄存器的計數(shù)結果輸出至DOUTDOUTalways (posedge CLK or negedge RST)
60、begin always (posedge CLK or negedge RST) begin /時序過程時序過程if(!RST)Q1=0; if(!RST)Q1=0; /RST=0/RST=0時,對內部寄存器單元異步清時,對內部寄存器單元異步清0 0else if(EN)begin else if(EN)begin /同步使能同步使能EN=1EN=1,則允許加載或計數(shù),則允許加載或計數(shù)if(!LOAD)Q1=DATA; if(!LOAD)Q1=DATA; /當當LOAD=1LOAD=1,向內部寄存器加載數(shù)據(jù),向內部寄存器加載數(shù)據(jù)else if(Q1else if(Q116h)Q1=Q1+1;
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 如何寫商標代理合同范本
- 胃癌肝性腦病的護理查房
- 臨時工合同的工作時間與休息規(guī)定
- 農(nóng)業(yè)科技信息化需求管理制度
- 2024年精細化工專用電熱推板窯項目可行性研究報告
- 2024年全自動顯示屏項目可行性研究報告
- 智能化環(huán)保工程施工組織設計方案
- 幼兒園環(huán)境美化與布置方案
- 高空作業(yè)安全責任制度方案
- 化工行業(yè)物資及運輸車輛防疫管控方案
- 模特面試登記表
- 餐飲業(yè)月度收入支出費用報表
- 訴訟材料接收表
- 可隨意編輯【封面+簡歷+自薦信】淡雅歐美花紋古典求職個人簡歷
- 人教版選修《中國小說欣賞》課件:聊齋志異
- 混凝土結構設計原理課程設計報告報告
- 工程量計量計算表模板監(jiān)理
- 財經(jīng)應用文寫作教案
- 2022年中國鐵路國際有限公司招考聘用高校畢業(yè)生(同步測試)模擬卷和答案
- 護坡、阻滑體、齒墻、混凝土施工工藝
- 干細胞治療講稿
評論
0/150
提交評論