第三講 可綜合VerilogHDL_第1頁(yè)
第三講 可綜合VerilogHDL_第2頁(yè)
第三講 可綜合VerilogHDL_第3頁(yè)
第三講 可綜合VerilogHDL_第4頁(yè)
第三講 可綜合VerilogHDL_第5頁(yè)
已閱讀5頁(yè),還剩56頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、電工電子科技創(chuàng)新中心電工電子科技創(chuàng)新中心基于fpga的嵌入式系統(tǒng)設(shè)計(jì)spring 2010可綜合veriloghdl設(shè)計(jì)slide 1基于基于fpgafpga的嵌入式系統(tǒng)設(shè)計(jì)的嵌入式系統(tǒng)設(shè)計(jì)電工電子工程基礎(chǔ)電工電子工程基礎(chǔ)王貞炎王貞炎電工電子科技創(chuàng)新中心電工電子科技創(chuàng)新中心基于fpga的嵌入式系統(tǒng)設(shè)計(jì)spring 2010可綜合veriloghdl設(shè)計(jì)slide 23 可綜合可綜合veriloghdl設(shè)計(jì)設(shè)計(jì) 3.1 fpga中邏輯設(shè)計(jì)的一些概念和原則中邏輯設(shè)計(jì)的一些概念和原則 3.2 組合邏輯的建模組合邏輯的建模 3.3 時(shí)序邏輯的建模時(shí)序邏輯的建模 3.4 存儲(chǔ)器的建模與使用存儲(chǔ)器的建模與

2、使用 3.5 有限狀態(tài)機(jī)的建模有限狀態(tài)機(jī)的建模 3.6 課堂操作實(shí)驗(yàn)課堂操作實(shí)驗(yàn)電工電子科技創(chuàng)新中心電工電子科技創(chuàng)新中心基于fpga的嵌入式系統(tǒng)設(shè)計(jì)spring 2010可綜合veriloghdl設(shè)計(jì)slide 33.1 fpga中邏輯設(shè)計(jì)的一些概念和原則中邏輯設(shè)計(jì)的一些概念和原則 3.1.1 一些基本概念一些基本概念 3.1.2 同步設(shè)計(jì)同步設(shè)計(jì) 3.1.3 串并操作串并操作 3.1.4 流水線流水線 3.1.5 異步時(shí)鐘域處理異步時(shí)鐘域處理電工電子科技創(chuàng)新中心電工電子科技創(chuàng)新中心基于fpga的嵌入式系統(tǒng)設(shè)計(jì)spring 2010可綜合veriloghdl設(shè)計(jì)slide 43.1.1 一些基

3、本概念一些基本概念 3.1.1.1 面積和速度面積和速度面積:是指一個(gè)設(shè)計(jì)所消耗fpga,可理解為一個(gè)設(shè)計(jì)在fpga中占用的“面積”。主要由le衡量,還包括ram和dsp塊等。速度:是指一個(gè)設(shè)計(jì)在fpga芯片上能穩(wěn)定運(yùn)行的最高頻率?!懊娣e”和“速度”是一對(duì)對(duì)立統(tǒng)一的矛盾體。可以用更多的邏輯資源實(shí)現(xiàn)更快速的處理,也可以犧牲速度用較少的邏輯資源“面積”和“速度”互換。科學(xué)的設(shè)計(jì)目標(biāo)是:在滿足設(shè)計(jì)時(shí)序要求的前提下,占用最小的芯片面積;或者在所規(guī)定的面積下,使設(shè)計(jì)的時(shí)序余量更大,頻率更高。電工電子科技創(chuàng)新中心電工電子科技創(chuàng)新中心基于fpga的嵌入式系統(tǒng)設(shè)計(jì)spring 2010可綜合veriloghd

4、l設(shè)計(jì)slide 53.1.1 一些基本概念一些基本概念 3.1.1.1 verilog描述的邏輯的并行性描述的邏輯的并行性verilog很多語(yǔ)法規(guī)則和c語(yǔ)言相似,但兩者有本質(zhì)區(qū)別!在編寫verilog代碼時(shí),要始終記住:“我在描述一個(gè)硬件電路的連接,而不是順序執(zhí)行的代碼。”,對(duì)于一個(gè)硬件電路,在verilog描述中各部分語(yǔ)句的“執(zhí)行”是并發(fā)的。一個(gè)hdl代碼的優(yōu)劣的最終評(píng)價(jià)標(biāo)準(zhǔn)是其描述實(shí)現(xiàn)的硬件電路的性能(包括面積和速度兩個(gè)方面),而不能只是片面地追求代碼的簡(jiǎn)潔。在編寫verilog代碼前,應(yīng)先對(duì)系統(tǒng)要實(shí)現(xiàn)的硬件電路的連接在大體上和關(guān)鍵點(diǎn)上有一個(gè)明確地規(guī)劃。硬件描述語(yǔ)言是描述硬件的,要實(shí)現(xiàn)對(duì)

5、硬件實(shí)現(xiàn)“胸有成竹”,才能描述得好。電工電子科技創(chuàng)新中心電工電子科技創(chuàng)新中心基于fpga的嵌入式系統(tǒng)設(shè)計(jì)spring 2010可綜合veriloghdl設(shè)計(jì)slide 63.1.1 一些基本概念一些基本概念 3.1.1.1 合理分配模塊合理分配模塊在設(shè)計(jì)一個(gè)較大的系統(tǒng)時(shí),往往需要將系統(tǒng)分為多個(gè)模塊。模塊的劃分是需要合理考慮的。按實(shí)際功能劃分模塊。劃分出來(lái)的模塊的端口意義盡量簡(jiǎn)明。一個(gè)模塊自成一體,調(diào)用模塊者絕對(duì)不需要知道模塊內(nèi)部原理,絕對(duì)不需要干涉內(nèi)部工作過(guò)程。模塊規(guī)模合理。電工電子科技創(chuàng)新中心電工電子科技創(chuàng)新中心基于fpga的嵌入式系統(tǒng)設(shè)計(jì)spring 2010可綜合veriloghdl設(shè)計(jì)

6、slide 73.1.1 一些基本概念一些基本概念 3.1.1.1 合理利用資源合理利用資源在設(shè)計(jì)一個(gè)電子系統(tǒng)時(shí),要了解,什么樣的功能適合用le實(shí)現(xiàn),什么樣的功能時(shí)候由dsp、cpu實(shí)現(xiàn)(包括fpga內(nèi)部的dsp、cpu)。實(shí)時(shí)性要求高、頻率高、大量并行的功能模塊適合使用傳統(tǒng)的fpga邏輯實(shí)現(xiàn)。在fpga內(nèi)部設(shè)計(jì)時(shí),要對(duì)的fpga全局有宏觀上的合理安排,比如時(shí)鐘、模塊組織結(jié)構(gòu)、ram的利用、面積和速度等問(wèn)題。善于利用片內(nèi)ram、乘法器。電工電子科技創(chuàng)新中心電工電子科技創(chuàng)新中心基于fpga的嵌入式系統(tǒng)設(shè)計(jì)spring 2010可綜合veriloghdl設(shè)計(jì)slide 83.1.2 同步設(shè)計(jì)同步設(shè)

7、計(jì) 3.1.2.1 同步和異步設(shè)計(jì)同步和異步設(shè)計(jì)異步數(shù)字電路:電路的核心邏輯用組合電路實(shí)現(xiàn);電路的主要信號(hào)并不依賴任何一個(gè)時(shí)鐘性信號(hào);容易產(chǎn)生毛刺,出現(xiàn)競(jìng)爭(zhēng)冒險(xiǎn);不利于器件移植、不利于時(shí)序分析與驗(yàn)證。同步數(shù)字電路:電路核心邏輯用各種觸發(fā)器實(shí)現(xiàn);電路的主要信號(hào)都是由某個(gè)時(shí)鐘沿驅(qū)動(dòng)產(chǎn)生的;可以很好地避免毛刺;有利于器件移植和時(shí)序分析及驗(yàn)證??删幊唐骷杀驹絹?lái)越低,綜合效果越來(lái)越強(qiáng),現(xiàn)代pld設(shè)計(jì)首選同步時(shí)序設(shè)計(jì)方式!電工電子科技創(chuàng)新中心電工電子科技創(chuàng)新中心基于fpga的嵌入式系統(tǒng)設(shè)計(jì)spring 2010可綜合veriloghdl設(shè)計(jì)slide 93.1.2 同步設(shè)計(jì)同步設(shè)計(jì) 3.1.2.2 同步

8、設(shè)計(jì)的原則同步設(shè)計(jì)的原則所有信號(hào)均由時(shí)鐘驅(qū)動(dòng),并且在同一個(gè)設(shè)計(jì)內(nèi),最好只由同一個(gè)時(shí)鐘驅(qū)動(dòng)。在同步設(shè)計(jì)中,一切邏輯均可簡(jiǎn)化為由下面的結(jié)構(gòu)羅列而成電工電子科技創(chuàng)新中心電工電子科技創(chuàng)新中心基于fpga的嵌入式系統(tǒng)設(shè)計(jì)spring 2010可綜合veriloghdl設(shè)計(jì)slide 103.1.2 同步設(shè)計(jì)同步設(shè)計(jì) 3.1.2.3 建立時(shí)間和保持時(shí)間建立時(shí)間和保持時(shí)間 建立時(shí)間(tsu):在時(shí)鐘有效沿之前數(shù)據(jù)必須保持穩(wěn)定的最小時(shí)間保持時(shí)間(th):在時(shí)鐘有效沿之后數(shù)據(jù)必須保持穩(wěn)定的最小時(shí)間建立時(shí)間和保持時(shí)間形成一個(gè)時(shí)間窗,在此窗之內(nèi),數(shù)據(jù)必須保持穩(wěn)定。同步設(shè)計(jì)的速度限制,根本上源于建立時(shí)間和保持時(shí)間的要

9、求電工電子科技創(chuàng)新中心電工電子科技創(chuàng)新中心基于fpga的嵌入式系統(tǒng)設(shè)計(jì)spring 2010可綜合veriloghdl設(shè)計(jì)slide 113.1.2 同步設(shè)計(jì)同步設(shè)計(jì) 3.1.2.4 統(tǒng)一時(shí)鐘和時(shí)鐘使能!統(tǒng)一時(shí)鐘和時(shí)鐘使能!在同一個(gè)設(shè)計(jì)中,盡量讓所有的模塊使用同一時(shí)鐘,讓所有的“always(xxxedge clk)”中的clk是同一個(gè)clk。系統(tǒng)中不同部分的信號(hào)速率可能不一樣,使用時(shí)鐘使能控制處理速率。 例如:要讓一個(gè)模塊以1/8時(shí)鐘工作:電工電子科技創(chuàng)新中心電工電子科技創(chuàng)新中心基于fpga的嵌入式系統(tǒng)設(shè)計(jì)spring 2010可綜合veriloghdl設(shè)計(jì)slide 123.1.2 同步設(shè)

10、計(jì)同步設(shè)計(jì) 3.1.2.4 統(tǒng)一時(shí)鐘和數(shù)據(jù)使能!統(tǒng)一時(shí)鐘和數(shù)據(jù)使能! 數(shù)據(jù)流處理模塊的端口建議,使用于一切對(duì)單個(gè)數(shù)據(jù)處理需要數(shù)個(gè)、甚至不確定數(shù)目的時(shí)鐘周期的情況。clk:工作時(shí)鐘arst:異步復(fù)位datain:數(shù)據(jù)輸入dataen:輸入數(shù)據(jù)有效dataout:數(shù)據(jù)輸出datavalid:輸出數(shù)據(jù)有效指示每一級(jí)的datavalid接至后級(jí)的dataen。dataen有效時(shí),采入數(shù)據(jù)進(jìn)行處理。處理完數(shù)據(jù)輸出的同時(shí)讓datavalid有效,通知下級(jí)。電工電子科技創(chuàng)新中心電工電子科技創(chuàng)新中心基于fpga的嵌入式系統(tǒng)設(shè)計(jì)spring 2010可綜合veriloghdl設(shè)計(jì)slide 133.1.3 串并

11、操作串并操作 “串并操作”是面積速度互換原則的直接體現(xiàn)。 將串行轉(zhuǎn)換為并行,一般旨在通過(guò)復(fù)制邏輯,提高整個(gè)設(shè)計(jì)的設(shè)計(jì)吞吐量,其本質(zhì)是通過(guò)面積的消耗提高系統(tǒng)的工作速率。 將并行轉(zhuǎn)換為串行,一般旨在節(jié)約資源,因?yàn)樵O(shè)計(jì)速度有足夠的余量,通過(guò)提高串行通道的工作速率而節(jié)約了面積,其本質(zhì)是通過(guò)速度的提高節(jié)約芯片面積。如串行加法器,乘法器,除法器等。電工電子科技創(chuàng)新中心電工電子科技創(chuàng)新中心基于fpga的嵌入式系統(tǒng)設(shè)計(jì)spring 2010可綜合veriloghdl設(shè)計(jì)slide 143.1.4 流水線流水線 流水線處理是高速設(shè)計(jì)中的常用設(shè)計(jì)手段,是面積換取速度原則的又一具體體現(xiàn)。 時(shí)序邏輯處理數(shù)據(jù)流就是天然

12、的流水線結(jié)構(gòu)。 流水線的結(jié)構(gòu)示例:電工電子科技創(chuàng)新中心電工電子科技創(chuàng)新中心基于fpga的嵌入式系統(tǒng)設(shè)計(jì)spring 2010可綜合veriloghdl設(shè)計(jì)slide 153.1.4 流水線流水線 流水線示例:y=|a|*100-100電工電子科技創(chuàng)新中心電工電子科技創(chuàng)新中心基于fpga的嵌入式系統(tǒng)設(shè)計(jì)spring 2010可綜合veriloghdl設(shè)計(jì)slide 163.1.5 異步時(shí)鐘域處理異步時(shí)鐘域處理 如果連續(xù)兩個(gè)數(shù)據(jù)處理模塊需要使用不同的時(shí)鐘,前級(jí)的數(shù)據(jù)由一個(gè)時(shí)鐘驅(qū)動(dòng)輸出,而后級(jí)的輸入?yún)s有另一個(gè)時(shí)鐘采入。這時(shí)出現(xiàn)時(shí)鐘異步。 異步域數(shù)據(jù)同步也是fpga設(shè)計(jì)的一個(gè)較常見(jiàn)問(wèn)題,處理不好往往會(huì)

13、影響系統(tǒng)穩(wěn)定。 異步時(shí)鐘域同步的表現(xiàn)形式: 同頻異相問(wèn)題,兩個(gè)時(shí)鐘域頻率相同,但相差不固定。 異頻問(wèn)題,兩個(gè)時(shí)鐘域的頻率不同。電工電子科技創(chuàng)新中心電工電子科技創(chuàng)新中心基于fpga的嵌入式系統(tǒng)設(shè)計(jì)spring 2010可綜合veriloghdl設(shè)計(jì)slide 173.1.5 異步時(shí)鐘域處理異步時(shí)鐘域處理 一般同步方法: 兩級(jí)寄存器采樣,即用后級(jí)時(shí)鐘對(duì)前級(jí)數(shù)據(jù)采樣兩次。這種做法可以有效地減少亞穩(wěn)態(tài)的傳播,使后級(jí)電平都是有效電平值,但不一定是正確電平值。該方法適用于對(duì)錯(cuò)誤不敏感的同頻異相時(shí)鐘域數(shù)據(jù)的同步。 使用fifo,可以可靠解決異步時(shí)鐘域數(shù)據(jù)的同步問(wèn)題,注意數(shù)據(jù)滿和空:前級(jí)時(shí)鐘大于后級(jí)時(shí)鐘,注意

14、寫滿;前級(jí)時(shí)鐘小于后級(jí)時(shí)鐘,注意讀空。電工電子科技創(chuàng)新中心電工電子科技創(chuàng)新中心基于fpga的嵌入式系統(tǒng)設(shè)計(jì)spring 2010可綜合veriloghdl設(shè)計(jì)slide 183.1.5 異步時(shí)鐘域處理異步時(shí)鐘域處理 特殊情況轉(zhuǎn)換低頻時(shí)鐘為時(shí)鐘使能: 如果低頻時(shí)鐘頻率遠(yuǎn)低于高頻時(shí)鐘,建議用高頻時(shí)鐘將低頻時(shí)鐘同步為單周期使能信號(hào)。 典型例子: 用外部處理器(或用nios pio)與fpga邏輯交互。外部處理器送來(lái)的時(shí)鐘可能很慢。電工電子科技創(chuàng)新中心電工電子科技創(chuàng)新中心基于fpga的嵌入式系統(tǒng)設(shè)計(jì)spring 2010可綜合veriloghdl設(shè)計(jì)slide 193.2 組合邏輯的建模組合邏輯的建模

15、 3.2.1 方法一方法一數(shù)據(jù)流建模數(shù)據(jù)流建模 參數(shù)化的奇偶校驗(yàn)器 3.2.2 方法二方法二行為建模行為建模 bcd7段譯碼器 3.2.3 方法三方法三結(jié)構(gòu)建模結(jié)構(gòu)建模 雙向信號(hào)接口電工電子科技創(chuàng)新中心電工電子科技創(chuàng)新中心基于fpga的嵌入式系統(tǒng)設(shè)計(jì)spring 2010可綜合veriloghdl設(shè)計(jì)slide 203.2.1 組合邏輯的數(shù)據(jù)流建模組合邏輯的數(shù)據(jù)流建模 參數(shù)化的奇偶校驗(yàn)器的建模參數(shù)化的奇偶校驗(yàn)器的建模module paritygenerator(datain,oddpar,evenpar); parameter nbits=4; input nbits-1:0 datain;

16、output oddpar,evenpar; assign evenpar=datain; assign oddpar=evenpar;endmodule電工電子科技創(chuàng)新中心電工電子科技創(chuàng)新中心基于fpga的嵌入式系統(tǒng)設(shè)計(jì)spring 2010可綜合veriloghdl設(shè)計(jì)slide 213.2.2 組合邏輯的行為建模組合邏輯的行為建模bcd7段譯碼器的建模段譯碼器的建模module bcd2led(a,b,c,d,e,f,g,d3,d2,d1,d0); output a,b,c,d,e,f,g; input d3,d2,d1,d0; reg a,b,c,d,e,f,g; always(d3

17、or d2 or d1 or d0) begin case(d3,d2,d1,d0) 4d0: a,b,c,d,e,f,g=7b1111110; 4d1: a,b,c,d,e,f,g=7b0110000; 4d2: a,b,c,d,e,f,g=7b1101101; 4d3: a,b,c,d,e,f,g=7b1111001; 4d4: a,b,c,d,e,f,g=7b0110011; 4d5: a,b,c,d,e,f,g=7b1011011; 4d6: a,b,c,d,e,f,g=7b1011111; 4d7: a,b,c,d,e,f,g=7b1110000; 4d8: a,b,c,d,e,f,

18、g=7b1111111; 4d9: a,b,c,d,e,f,g=7b1111011; default: a,b,c,d,e,f,g=7b0000000; endcase endendmodule電工電子科技創(chuàng)新中心電工電子科技創(chuàng)新中心基于fpga的嵌入式系統(tǒng)設(shè)計(jì)spring 2010可綜合veriloghdl設(shè)計(jì)slide 223.2.3 組合邏輯的結(jié)構(gòu)建模組合邏輯的結(jié)構(gòu)建模 雙向信號(hào)接口的建模雙向信號(hào)接口的建模module ee_sstl(o,i,io,e,bi); output o; input i,e,bi; inout io; wire q1; bufif1 g1(io,i,e); b

19、ufif1 g2(q1,io,bi); buf g3(o,q1);endmodule電工電子科技創(chuàng)新中心電工電子科技創(chuàng)新中心基于fpga的嵌入式系統(tǒng)設(shè)計(jì)spring 2010可綜合veriloghdl設(shè)計(jì)slide 233.3 時(shí)序邏輯的建模時(shí)序邏輯的建模3.3.1 觸發(fā)器建模觸發(fā)器建模 異步清零或置位 同步清零或置位3.3.2 鎖存器建模鎖存器建模 異步清零或置位3.3.3 計(jì)數(shù)器建模計(jì)數(shù)器建模 二進(jìn)制計(jì)數(shù)器 模n計(jì)數(shù)器 格雷碼計(jì)數(shù)器3.3.4 移位寄存器建模移位寄存器建模3.3.5 一些設(shè)計(jì)的注意事項(xiàng)一些設(shè)計(jì)的注意事項(xiàng)電工電子科技創(chuàng)新中心電工電子科技創(chuàng)新中心基于fpga的嵌入式系統(tǒng)設(shè)計(jì)sp

20、ring 2010可綜合veriloghdl設(shè)計(jì)slide 243.3.1 觸發(fā)器建模觸發(fā)器建模3.3.1.1 異步置位清零異步置位清零d觸發(fā)器觸發(fā)器module asyncpreclrdff(clk,clear,preset,data,q); input clk,clear,data,preset; output q; reg q; always(posedge clk or posedge clear or posedge preset) if(preset) q=1b1; else if(clear) q=1b0; else q=data;endmodule電工電子科技創(chuàng)新中心電工電子科

21、技創(chuàng)新中心基于fpga的嵌入式系統(tǒng)設(shè)計(jì)spring 2010可綜合veriloghdl設(shè)計(jì)slide 253.3.1 觸發(fā)器建模觸發(fā)器建模3.3.1.2 同步置位清零同步置位清零d觸發(fā)器觸發(fā)器module syncpreclrdff(clk,clear,preset,data,q); input clk,clear,data,preset; output q; reg q; always(negedge clk) if(preset) q=1b1; else if(clear) q=1b0; else q=data;endmodule電工電子科技創(chuàng)新中心電工電子科技創(chuàng)新中心基于fpga的嵌入式

22、系統(tǒng)設(shè)計(jì)spring 2010可綜合veriloghdl設(shè)計(jì)slide 263.3.2 鎖存器建模鎖存器建模3.3.2.1 異步置位清零鎖存器異步置位清零鎖存器module asyncpreclrlatch(clk,clear,preset,data,q); input clk,clear,data,preset; output q; reg q; always(clk or clear or preset or data) if(preset) q=1b1; else if(clear) q=1b0; else if(clk) q=data;endmodule電工電子科技創(chuàng)新中心電工電子科技

23、創(chuàng)新中心基于fpga的嵌入式系統(tǒng)設(shè)計(jì)spring 2010可綜合veriloghdl設(shè)計(jì)slide 273.3.3 計(jì)數(shù)器建模計(jì)數(shù)器建模3.3.3.1 二進(jìn)制計(jì)數(shù)器二進(jìn)制計(jì)數(shù)器module binarycounter(ck,updown,presetclear,loaddata,datain,q,qn); parameter nbits=2; input ck,updown,presetclear,loaddata; input nbits-1:0 datain; output nbits-1:0 q,qn; reg nbits-1:0 counter; always(posedge ck)

24、if(presetclear) counter=0; else if(loaddata) counter=datain; else if(updown) counter=counter+1; else counter=counter-1; assign q=counter; assign qn=counter;endmodule電工電子科技創(chuàng)新中心電工電子科技創(chuàng)新中心基于fpga的嵌入式系統(tǒng)設(shè)計(jì)spring 2010可綜合veriloghdl設(shè)計(jì)slide 283.3.3 計(jì)數(shù)器建模計(jì)數(shù)器建模 3.3.3.2 模模n計(jì)數(shù)器計(jì)數(shù)器module modulon_cntr(clock,clear,q

25、,qbar); parameter nbits=2,upto=3; input clock,clear; output nbits-1:0 q,qbar; reg nbits-1:0 counter; always(posedge clock) if(clear) counter=0; else counter=(counter+1)%upto; assign q=counter; assign qbar=counter;endmodule電工電子科技創(chuàng)新中心電工電子科技創(chuàng)新中心基于fpga的嵌入式系統(tǒng)設(shè)計(jì)spring 2010可綜合veriloghdl設(shè)計(jì)slide 293.3.3 計(jì)數(shù)器建

26、模計(jì)數(shù)器建模3.3.3.3 格雷碼計(jì)數(shù)器格雷碼計(jì)數(shù)器轉(zhuǎn)換規(guī)則:格雷碼最高位與二進(jìn)制碼最高位相同;格雷碼的次高位是其二進(jìn)制碼的最高位和次高位異或的結(jié)果;依次類推,直到最低位。module graycounter(clockg,clear,q,qn); parameter nbits=2; input clockg,clear; output 1:nbits q,qn; reg 1:nbits counter,graycount; integer k; always(posedge clockg) if(clear) counter=0; else counter=counter+1; alway

27、s(counter) begin graycount1=counter1; for(k=2;k=nbits;k=k+1) graycountk=counterk-1counterk; end assign q=graycount; assign qn=graycount;endmodule序號(hào)二進(jìn)制右移一位格雷碼00000000001001000001201000101130110010104100010110510101011161100111017111011100電工電子科技創(chuàng)新中心電工電子科技創(chuàng)新中心基于fpga的嵌入式系統(tǒng)設(shè)計(jì)spring 2010可綜合veriloghdl設(shè)計(jì)sli

28、de 303.3.4 移位寄存器建模移位寄存器建模3.3.3.4 3位通用移位寄存器的綜合模型位通用移位寄存器的綜合模型具備功能:保持、左移、右移、載入。module univshiftregister(clock,clear,leftin,rightin,s0,s1,parin,q); input clock,clear,leftin,rightin,s0,s1; input 2:0 parin; output 2:0 q; reg 2:0 q; always(negedge clear or posedge clock) if(!clear) q=3b000; else case(s0,s

29、1) 2b00: ; 2b01: q=q1:0,rightin; 2b10: q=leftin,q2:1; 2b11: q=parin; endcaseendmodule電工電子科技創(chuàng)新中心電工電子科技創(chuàng)新中心基于fpga的嵌入式系統(tǒng)設(shè)計(jì)spring 2010可綜合veriloghdl設(shè)計(jì)slide 313.3.5 一些設(shè)計(jì)的注意事項(xiàng)一些設(shè)計(jì)的注意事項(xiàng) 3.3.5.1 避免組合邏輯反饋環(huán)路避免組合邏輯反饋環(huán)路 組合邏輯反饋環(huán)路( combinational loops)是 pld設(shè)計(jì)的大忌!它最容易因振蕩、毛刺、時(shí)序違規(guī)等引起整個(gè)系統(tǒng)的不穩(wěn)定和不可靠。 處理方法: 牢記任何反饋環(huán)路必須包含寄存

30、器。 檢查綜合、實(shí)現(xiàn)報(bào)告的warning信息,發(fā)現(xiàn)combinational loops后進(jìn)行相應(yīng)修改。電工電子科技創(chuàng)新中心電工電子科技創(chuàng)新中心基于fpga的嵌入式系統(tǒng)設(shè)計(jì)spring 2010可綜合veriloghdl設(shè)計(jì)slide 323.3.5 一些設(shè)計(jì)的注意事項(xiàng)一些設(shè)計(jì)的注意事項(xiàng) 3.3.5.2 替換延遲鏈替換延遲鏈 延遲鏈?zhǔn)钱惒綍r(shí)序設(shè)計(jì)的常用手段,特別是在早期pld設(shè)計(jì)和當(dāng)代asic設(shè)計(jì)中,經(jīng)常使用delay chains實(shí)現(xiàn)兩個(gè)結(jié)點(diǎn)間的延遲調(diào)整。當(dāng)代pld設(shè)計(jì)推薦使用同步實(shí)現(xiàn)設(shè)計(jì)方法,一般要避免使用異步的delay chains。 在同步時(shí)序設(shè)計(jì)中,取代異步delay chains

31、的最常用方法是用分頻或倍頻的時(shí)鐘或者同步計(jì)數(shù)器完成所需延遲。電工電子科技創(chuàng)新中心電工電子科技創(chuàng)新中心基于fpga的嵌入式系統(tǒng)設(shè)計(jì)spring 2010可綜合veriloghdl設(shè)計(jì)slide 333.3.5 一些設(shè)計(jì)的注意事項(xiàng)一些設(shè)計(jì)的注意事項(xiàng) 3.3.5.3 替換異步脈沖產(chǎn)生單元替換異步脈沖產(chǎn)生單元: 在異步設(shè)計(jì)中,常用delay chains完成脈沖產(chǎn)生: 常用的同步脈沖產(chǎn)生方法:電工電子科技創(chuàng)新中心電工電子科技創(chuàng)新中心基于fpga的嵌入式系統(tǒng)設(shè)計(jì)spring 2010可綜合veriloghdl設(shè)計(jì)slide 343.3.5 一些設(shè)計(jì)的注意事項(xiàng)一些設(shè)計(jì)的注意事項(xiàng) 3.3.5.4 慎用鎖存器

32、慎用鎖存器 同步邏輯設(shè)計(jì)要避免使用latch。 綜合出與設(shè)計(jì)意圖不吻合的latch結(jié)構(gòu)的主要原因有: 在設(shè)計(jì)組合邏輯時(shí),使用不完全的條件判斷語(yǔ)句,如if沒(méi)有else,或不完整的case語(yǔ)句; 設(shè)計(jì)中存在組合邏輯的反饋環(huán)路。 防止產(chǎn)生非目的性latch的方法: 使用完備的ifelse語(yǔ)句; 檢查設(shè)計(jì)中是否含有組合邏輯反饋環(huán)路; 為每個(gè)輸入條件設(shè)計(jì)輸出操作,對(duì)case語(yǔ)句設(shè)置默認(rèn)操作; 使用case語(yǔ)句時(shí),特別是在設(shè)計(jì)狀態(tài)機(jī)時(shí),盡量附加綜合約束屬性,綜合為完全條件case語(yǔ)句(full case)。電工電子科技創(chuàng)新中心電工電子科技創(chuàng)新中心基于fpga的嵌入式系統(tǒng)設(shè)計(jì)spring 2010可綜合ve

33、riloghdl設(shè)計(jì)slide 353.3.5 一些設(shè)計(jì)的注意事項(xiàng)一些設(shè)計(jì)的注意事項(xiàng) 3.3.5.5 同步時(shí)序電路推薦的時(shí)鐘設(shè)計(jì)方法同步時(shí)序電路推薦的時(shí)鐘設(shè)計(jì)方法 時(shí)鐘經(jīng)全局時(shí)鐘輸入引腳輸入,通過(guò)fpga內(nèi)部專用pll進(jìn)行分頻/倍頻(一般可實(shí)現(xiàn)小數(shù)分頻倍頻)、移相等調(diào)整與運(yùn)算,然后經(jīng)fpga內(nèi)部全局時(shí)鐘布線資源(一般為全銅工藝)驅(qū)動(dòng)到達(dá)芯片內(nèi)所有寄存器和其它模塊的時(shí)鐘輸入端。電工電子科技創(chuàng)新中心電工電子科技創(chuàng)新中心基于fpga的嵌入式系統(tǒng)設(shè)計(jì)spring 2010可綜合veriloghdl設(shè)計(jì)slide 363.3.5 一些設(shè)計(jì)的注意事項(xiàng)一些設(shè)計(jì)的注意事項(xiàng) 3.3.5.6 內(nèi)部邏輯產(chǎn)生的時(shí)鐘內(nèi)

34、部邏輯產(chǎn)生的時(shí)鐘 如果需要使用內(nèi)部邏輯產(chǎn)生時(shí)鐘,必須要在組合邏輯產(chǎn)生的時(shí)鐘后插入寄存器。電工電子科技創(chuàng)新中心電工電子科技創(chuàng)新中心基于fpga的嵌入式系統(tǒng)設(shè)計(jì)spring 2010可綜合veriloghdl設(shè)計(jì)slide 373.3.5 一些設(shè)計(jì)的注意事項(xiàng)一些設(shè)計(jì)的注意事項(xiàng) 3.3.5.7 門控時(shí)鐘的使用問(wèn)題門控時(shí)鐘的使用問(wèn)題 門控時(shí)鐘即gated clock,是ic設(shè)計(jì)的一種常用減少功耗的手段。但是gated clock不是同步時(shí)序電路,其門控邏輯會(huì)污染clock的質(zhì)量。 門控時(shí)鐘改進(jìn)電路:電工電子科技創(chuàng)新中心電工電子科技創(chuàng)新中心基于fpga的嵌入式系統(tǒng)設(shè)計(jì)spring 2010可綜合veri

35、loghdl設(shè)計(jì)slide 383.4 存儲(chǔ)器的建模與使用存儲(chǔ)器的建模與使用 最好把存儲(chǔ)器建模成一個(gè)元件。通常,綜合工具不能最好把存儲(chǔ)器建模成一個(gè)元件。通常,綜合工具不能有效地設(shè)計(jì)出存儲(chǔ)器。一般采用更傳統(tǒng)的技術(shù)來(lái)建立有效地設(shè)計(jì)出存儲(chǔ)器。一般采用更傳統(tǒng)的技術(shù)來(lái)建立存儲(chǔ)器。一旦建立了存儲(chǔ)器模塊,就可以在綜合模型存儲(chǔ)器。一旦建立了存儲(chǔ)器模塊,就可以在綜合模型中使用模塊實(shí)例化語(yǔ)句來(lái)實(shí)例化該模塊。中使用模塊實(shí)例化語(yǔ)句來(lái)實(shí)例化該模塊。 層次設(shè)計(jì)方法和圖文混合設(shè)計(jì)的概念層次設(shè)計(jì)方法和圖文混合設(shè)計(jì)的概念 實(shí)例:查找表乘法器實(shí)例:查找表乘法器電工電子科技創(chuàng)新中心電工電子科技創(chuàng)新中心基于fpga的嵌入式系統(tǒng)設(shè)計(jì)s

36、pring 2010可綜合veriloghdl設(shè)計(jì)slide 393.4.1 存儲(chǔ)器的使用步驟存儲(chǔ)器的使用步驟電工電子科技創(chuàng)新中心電工電子科技創(chuàng)新中心基于fpga的嵌入式系統(tǒng)設(shè)計(jì)spring 2010可綜合veriloghdl設(shè)計(jì)slide 403.4.1 存儲(chǔ)器的使用步驟存儲(chǔ)器的使用步驟電工電子科技創(chuàng)新中心電工電子科技創(chuàng)新中心基于fpga的嵌入式系統(tǒng)設(shè)計(jì)spring 2010可綜合veriloghdl設(shè)計(jì)slide 413.4.1 存儲(chǔ)器的使用步驟存儲(chǔ)器的使用步驟電工電子科技創(chuàng)新中心電工電子科技創(chuàng)新中心基于fpga的嵌入式系統(tǒng)設(shè)計(jì)spring 2010可綜合veriloghdl設(shè)計(jì)slide

37、 423.4.1 存儲(chǔ)器的使用步驟存儲(chǔ)器的使用步驟電工電子科技創(chuàng)新中心電工電子科技創(chuàng)新中心基于fpga的嵌入式系統(tǒng)設(shè)計(jì)spring 2010可綜合veriloghdl設(shè)計(jì)slide 433.4.1 存儲(chǔ)器的使用步驟存儲(chǔ)器的使用步驟電工電子科技創(chuàng)新中心電工電子科技創(chuàng)新中心基于fpga的嵌入式系統(tǒng)設(shè)計(jì)spring 2010可綜合veriloghdl設(shè)計(jì)slide 443.4.1 存儲(chǔ)器的使用步驟存儲(chǔ)器的使用步驟電工電子科技創(chuàng)新中心電工電子科技創(chuàng)新中心基于fpga的嵌入式系統(tǒng)設(shè)計(jì)spring 2010可綜合veriloghdl設(shè)計(jì)slide 453.4.1 存儲(chǔ)器的使用步驟存儲(chǔ)器的使用步驟電工電子科

38、技創(chuàng)新中心電工電子科技創(chuàng)新中心基于fpga的嵌入式系統(tǒng)設(shè)計(jì)spring 2010可綜合veriloghdl設(shè)計(jì)slide 463.4.2 圖形輸入圖形輸入電工電子科技創(chuàng)新中心電工電子科技創(chuàng)新中心基于fpga的嵌入式系統(tǒng)設(shè)計(jì)spring 2010可綜合veriloghdl設(shè)計(jì)slide 473.4.3 建立存儲(chǔ)器初始化文件建立存儲(chǔ)器初始化文件電工電子科技創(chuàng)新中心電工電子科技創(chuàng)新中心基于fpga的嵌入式系統(tǒng)設(shè)計(jì)spring 2010可綜合veriloghdl設(shè)計(jì)slide 483.4.4 設(shè)定存儲(chǔ)器初始化數(shù)據(jù)設(shè)定存儲(chǔ)器初始化數(shù)據(jù)電工電子科技創(chuàng)新中心電工電子科技創(chuàng)新中心基于fpga的嵌入式系統(tǒng)設(shè)計(jì)s

39、pring 2010可綜合veriloghdl設(shè)計(jì)slide 493.4.5 仿真結(jié)果仿真結(jié)果電工電子科技創(chuàng)新中心電工電子科技創(chuàng)新中心基于fpga的嵌入式系統(tǒng)設(shè)計(jì)spring 2010可綜合veriloghdl設(shè)計(jì)slide 503.5 有限狀態(tài)機(jī)的建模有限狀態(tài)機(jī)的建模 3.5.1 有限狀態(tài)機(jī)的概念有限狀態(tài)機(jī)的概念 3.5.2 有限狀態(tài)機(jī)的設(shè)計(jì)步驟有限狀態(tài)機(jī)的設(shè)計(jì)步驟 3.5.3 有限狀態(tài)機(jī)的狀態(tài)編碼有限狀態(tài)機(jī)的狀態(tài)編碼 3.5.4 有限狀態(tài)機(jī)的設(shè)計(jì)方法有限狀態(tài)機(jī)的設(shè)計(jì)方法 3.5.5 有限狀態(tài)機(jī)的建模實(shí)例有限狀態(tài)機(jī)的建模實(shí)例序列檢測(cè)器序列檢測(cè)器電工電子科技創(chuàng)新中心電工電子科技創(chuàng)新中心基于fp

40、ga的嵌入式系統(tǒng)設(shè)計(jì)spring 2010可綜合veriloghdl設(shè)計(jì)slide 513.5.1 有限狀態(tài)機(jī)的概念有限狀態(tài)機(jī)的概念電工電子科技創(chuàng)新中心電工電子科技創(chuàng)新中心基于fpga的嵌入式系統(tǒng)設(shè)計(jì)spring 2010可綜合veriloghdl設(shè)計(jì)slide 523.5.2 有限狀態(tài)機(jī)的設(shè)計(jì)步驟有限狀態(tài)機(jī)的設(shè)計(jì)步驟 1、邏輯抽象,得出狀態(tài)轉(zhuǎn)換圖、邏輯抽象,得出狀態(tài)轉(zhuǎn)換圖 2、狀態(tài)化簡(jiǎn)、狀態(tài)化簡(jiǎn) 3、狀態(tài)分配、狀態(tài)分配 4、選定觸發(fā)器類型,求出狀態(tài)方程,驅(qū)動(dòng)、選定觸發(fā)器類型,求出狀態(tài)方程,驅(qū)動(dòng)方程,輸出方程方程,輸出方程 5、按照方程得出邏輯圖、按照方程得出邏輯圖 用用verilog語(yǔ)言描述

41、,大部分工作都由計(jì)算語(yǔ)言描述,大部分工作都由計(jì)算機(jī)自動(dòng)完成機(jī)自動(dòng)完成電工電子科技創(chuàng)新中心電工電子科技創(chuàng)新中心基于fpga的嵌入式系統(tǒng)設(shè)計(jì)spring 2010可綜合veriloghdl設(shè)計(jì)slide 533.5.3 有限狀態(tài)機(jī)的狀態(tài)編碼有限狀態(tài)機(jī)的狀態(tài)編碼 二進(jìn)制編碼或格雷碼二進(jìn)制編碼或格雷碼 獨(dú)熱碼獨(dú)熱碼 cpld格雷碼格雷碼 fpga獨(dú)熱碼獨(dú)熱碼電工電子科技創(chuàng)新中心電工電子科技創(chuàng)新中心基于fpga的嵌入式系統(tǒng)設(shè)計(jì)spring 2010可綜合veriloghdl設(shè)計(jì)slide 543.5.4 有限狀態(tài)機(jī)的設(shè)計(jì)方法有限狀態(tài)機(jī)的設(shè)計(jì)方法 三段式狀態(tài)機(jī)的設(shè)計(jì)方法三段式狀態(tài)機(jī)的設(shè)計(jì)方法狀態(tài)轉(zhuǎn)移塊(時(shí)

42、序)狀態(tài)驅(qū)動(dòng)塊(組合)狀態(tài)輸出塊(組合)電工電子科技創(chuàng)新中心電工電子科技創(chuàng)新中心基于fpga的嵌入式系統(tǒng)設(shè)計(jì)spring 2010可綜合veriloghdl設(shè)計(jì)slide 553.5.5 序列檢測(cè)器序列檢測(cè)器 檢測(cè)到序列檢測(cè)到序列110,輸出,輸出1,否則,否則0 狀態(tài)轉(zhuǎn)換圖狀態(tài)轉(zhuǎn)換圖: (s0:輸入一個(gè)輸入一個(gè)0;s1:收到一個(gè)收到一個(gè)1;s2:連連續(xù)收到兩個(gè)續(xù)收到兩個(gè)1;s3:連續(xù)收到連續(xù)收到110)電工電子科技創(chuàng)新中心電工電子科技創(chuàng)新中心基于fpga的嵌入式系統(tǒng)設(shè)計(jì)spring 2010可綜合veriloghdl設(shè)計(jì)slide 563.5.5 序列檢測(cè)器序列檢測(cè)器 狀態(tài)轉(zhuǎn)移塊狀態(tài)轉(zhuǎn)移塊

43、parameter 3:0 s0=4b0001,s1=4b0010,s2=4b0100,s3=4b1000; /獨(dú)熱碼 reg 3:0 current_state,next_state; always (posedge clk) /狀態(tài)轉(zhuǎn)移塊 begin if(!nclr) current_state=s0; else current_state=next_state; end電工電子科技創(chuàng)新中心電工電子科技創(chuàng)新中心基于fpga的嵌入式系統(tǒng)設(shè)計(jì)spring 2010可綜合veriloghdl設(shè)計(jì)slide 573.5.5 序列檢測(cè)器序列檢測(cè)器 狀態(tài)驅(qū)動(dòng)塊狀態(tài)驅(qū)動(dòng)塊 always (current_state or data) / 狀態(tài)驅(qū)動(dòng)塊 begin case(current_state) s0: next_state=(data=1)?s1:s0); s1: next_state=(data=1)?s2:s0); s2: next_state=(data=1)?s2:s3); s3: next_state=(data=1)?s1:s0); default: next_state=(data=1)?s1:s0); endcase end電工電子科技創(chuàng)新中心電工電子科技創(chuàng)新中心基于fpga的

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝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ù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 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ì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論