最新最新Verilog課件-第十一講-數(shù)字系統(tǒng)設(shè)計(jì)原則與設(shè)計(jì)實(shí)例_第1頁(yè)
最新最新Verilog課件-第十一講-數(shù)字系統(tǒng)設(shè)計(jì)原則與設(shè)計(jì)實(shí)例_第2頁(yè)
最新最新Verilog課件-第十一講-數(shù)字系統(tǒng)設(shè)計(jì)原則與設(shè)計(jì)實(shí)例_第3頁(yè)
最新最新Verilog課件-第十一講-數(shù)字系統(tǒng)設(shè)計(jì)原則與設(shè)計(jì)實(shí)例_第4頁(yè)
最新最新Verilog課件-第十一講-數(shù)字系統(tǒng)設(shè)計(jì)原則與設(shè)計(jì)實(shí)例_第5頁(yè)
已閱讀5頁(yè),還剩115頁(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)介

最新Verilog課件第十一講數(shù)字系統(tǒng)設(shè)計(jì)原則與設(shè)計(jì)實(shí)例最新Verilog課件第十一講數(shù)字系統(tǒng)設(shè)計(jì)原則與設(shè)計(jì)實(shí)例硬件原則按硬件原則,HDL的正確編寫(xiě)方法是:設(shè)計(jì)者要對(duì)所設(shè)計(jì)的硬件電路功能十分清楚。合理安排電路的數(shù)據(jù)流和控制邏輯,構(gòu)思RTL級(jí)電路體系結(jié)構(gòu)。掌握綜合工具要求和性能。用適當(dāng)?shù)?、綜合工具能理解的HDL語(yǔ)言描述出來(lái)。目前純行為級(jí)的綜合還不成熟,RTL級(jí)綜合仍是主流。在目前主流綜合工具中,部分行為描述語(yǔ)句可以綜合,如c<=a*b的乘法語(yǔ)句,quartus2內(nèi)嵌綜合工具會(huì)綜合成LPM乘法宏模塊。那些行為描述可以綜合,決定于具體的綜合工具,可參考綜合工具的使用手冊(cè)。硬件原則按硬件原則,HDL的正確編寫(xiě)方法是:面積和速度的平衡與互換原則面積是指一個(gè)設(shè)計(jì)消耗的邏輯資源數(shù)量,對(duì)FPGA可以用觸發(fā)器和組合邏輯單元來(lái)度量。速度指設(shè)計(jì)在芯片上穩(wěn)定運(yùn)行時(shí)能夠達(dá)到的最高頻率。面積和速度是一對(duì)矛盾的需求。要求一個(gè)設(shè)計(jì)同時(shí)具有設(shè)計(jì)面積最小,運(yùn)行速度最高是不現(xiàn)實(shí)的。平衡的設(shè)計(jì)目標(biāo)是:在滿足設(shè)計(jì)工作速度要求的前提下,占用最小的芯片面積;或芯片面積一定的情況下,使設(shè)計(jì)的工作速度最高。對(duì)應(yīng)的綜合工具有相關(guān)的綜合策略,如面積優(yōu)先、速度優(yōu)先或平衡方式。面積和速度的互換是IC設(shè)計(jì)的重要思想。如果一個(gè)設(shè)計(jì)時(shí)序余量較大,即工作速度遠(yuǎn)高于設(shè)計(jì)要求,就可以考慮采用串行方式復(fù)用部分邏輯,用速度換面積;反之工作速度不夠時(shí),可采用并行處理提高工作速度,即用面積換速度。當(dāng)面積和速度設(shè)計(jì)要求不能同時(shí)滿足時(shí),采用速度優(yōu)先原則。面積和速度的平衡與互換原則面積是指一個(gè)設(shè)計(jì)消耗的邏輯資源數(shù)量乒乓操作mux1:2處理單元1處理單元2mux2:1緩存1緩存2乒乓操作mux處理單元1處理單元2mux緩存1緩存2串并轉(zhuǎn)換串并轉(zhuǎn)換1:2處理單元1處理單元2并串轉(zhuǎn)換2:1串并轉(zhuǎn)換串并處理單元1處理單元2并串流水線概念Reg組合邏輯延時(shí):Delay=T1+T2+T3RegRegRegRegRegT1T3T2流水線概念組合邏輯延時(shí):T1T3T2同步設(shè)計(jì)原則早期的IC設(shè)計(jì)常用異步設(shè)計(jì),如行波計(jì)數(shù)器和異步脈沖發(fā)生器等,以減少設(shè)計(jì)面積。異步設(shè)計(jì)時(shí)序控制相當(dāng)繁雜而困難,且目前EDA工具多不支持異步設(shè)計(jì),較大規(guī)模的異步設(shè)計(jì)十分費(fèi)時(shí)費(fèi)力。隨著IC技術(shù)發(fā)展,減少器件資源已不是主要問(wèn)題,設(shè)計(jì)的穩(wěn)定可靠、與工藝無(wú)關(guān),減少設(shè)計(jì)周期更為重要。因此同步設(shè)計(jì)是目前IC設(shè)計(jì)的重要原則之一。同步系統(tǒng)設(shè)計(jì)中的基本問(wèn)題:設(shè)計(jì)必須滿足同步觸發(fā)器的建立、保持時(shí)間。同步系統(tǒng)時(shí)鐘、復(fù)位的合理規(guī)劃。注意同步時(shí)鐘域間信號(hào)的轉(zhuǎn)換。同步設(shè)計(jì)原則早期的IC設(shè)計(jì)常用異步設(shè)計(jì),如行波計(jì)數(shù)器和異步脈同步系統(tǒng)時(shí)鐘的規(guī)劃在同步數(shù)字系統(tǒng)設(shè)計(jì)中,設(shè)計(jì)不良的時(shí)鐘將導(dǎo)致系統(tǒng)錯(cuò)誤的行為,特別是在溫度、電壓或制造工藝存在偏差的情況下,很容易出現(xiàn)問(wèn)題,所以可靠的時(shí)鐘規(guī)劃設(shè)計(jì)是非常關(guān)鍵的。在數(shù)字邏輯設(shè)計(jì)時(shí)通常有以下三種時(shí)鐘方式:

全局時(shí)鐘門控時(shí)鐘行波時(shí)鐘同步系統(tǒng)時(shí)鐘的規(guī)劃在同步數(shù)字系統(tǒng)設(shè)計(jì)中,設(shè)計(jì)不良的時(shí)鐘將導(dǎo)致全局時(shí)鐘對(duì)于一個(gè)同步數(shù)字系統(tǒng)設(shè)計(jì)項(xiàng)目來(lái)說(shuō),全局時(shí)鐘是最簡(jiǎn)單和可預(yù)測(cè)的時(shí)鐘。在FPGA設(shè)計(jì)中最好的時(shí)鐘方案是:由專用的全局時(shí)鐘輸入引腳驅(qū)動(dòng)單個(gè)主時(shí)鐘去控制設(shè)計(jì)項(xiàng)目中的每一個(gè)觸發(fā)器。FPGA一般都具有專門的全局時(shí)鐘引腳,在設(shè)計(jì)項(xiàng)目時(shí)應(yīng)盡量采用全局時(shí)鐘,它能夠提供器件中最短的時(shí)鐘到輸出的延時(shí)和時(shí)鐘偏移。全局時(shí)鐘對(duì)于一個(gè)同步數(shù)字系統(tǒng)設(shè)計(jì)項(xiàng)目來(lái)說(shuō),全局時(shí)鐘是最簡(jiǎn)單時(shí)鐘偏移時(shí)序電路在FPGA中實(shí)現(xiàn)時(shí),若不用全局時(shí)鐘,由于時(shí)鐘各部分連線長(zhǎng)短不一致,雖然多個(gè)觸發(fā)器共用一個(gè)時(shí)鐘信號(hào),但觸發(fā)器時(shí)鐘端的信號(hào)延時(shí)并不相同,信號(hào)會(huì)發(fā)生不同的畸變,構(gòu)成時(shí)鐘信號(hào)偏移。DQ_AA3.03.1CLKDinDQ_BB12.53.1DQ_CC3.03.3(a)ExpectedoperationCLKQ_AQ_BQ_C(b)ClockskewedversionA&CQ_AQ_BQ_C(c)B時(shí)鐘偏移時(shí)序電路在FPGA中實(shí)現(xiàn)時(shí),若不用全局時(shí)鐘,由于時(shí)不可靠門控時(shí)鐘例如圖示門控時(shí)鐘將不能正常工作,因RCO信號(hào)有毛刺。QDOUTQAQBQCENCLKENABLERCODATA不希望的毛刺希望的時(shí)鐘上升沿不可靠門控時(shí)鐘例如圖示門控時(shí)鐘將不能正常工作,因RCO信號(hào)有不可靠的門控時(shí)鐘轉(zhuǎn)換為全局時(shí)鐘QDPRNCLRNENAOUTQAQBQCENCLKENABLERCODATA3位二進(jìn)制可逆計(jì)數(shù)器使能的時(shí)鐘上升沿與原設(shè)計(jì)等效作為使能信號(hào)毛刺無(wú)影響不可靠的門控時(shí)鐘轉(zhuǎn)換為全局時(shí)鐘QDPRNCLRNENAOUT行波時(shí)鐘所謂行波時(shí)鐘是指一個(gè)觸發(fā)器的輸出用作另一個(gè)觸發(fā)器的時(shí)鐘輸入。如果仔細(xì)設(shè)計(jì),行波時(shí)鐘可以像全局時(shí)鐘一樣可靠工作,但是行波時(shí)鐘使得與電路有關(guān)的定時(shí)計(jì)算變得很復(fù)雜。行波時(shí)鐘在行波鏈上各觸發(fā)器時(shí)鐘之間產(chǎn)生較大的時(shí)間偏移,使系統(tǒng)的實(shí)際速度下降。同步數(shù)字系統(tǒng)設(shè)計(jì)中一般只用全局時(shí)鐘和門控時(shí)鐘,不用行波時(shí)鐘用T觸發(fā)器構(gòu)成異步計(jì)數(shù)器時(shí),常采用行波時(shí)鐘,一個(gè)觸發(fā)器的輸出作為時(shí)鐘控制下一個(gè)觸發(fā)器的輸入,如下圖:CLKQTCLRNQTCLRNQTCLRNENABLEVCCVCCOUT行波時(shí)鐘所謂行波時(shí)鐘是指一個(gè)觸發(fā)器的輸出用作另一個(gè)觸發(fā)器的時(shí)多時(shí)鐘域系統(tǒng)許多系統(tǒng)要求在同一設(shè)計(jì)內(nèi)采用多時(shí)鐘,每個(gè)時(shí)鐘驅(qū)動(dòng)的觸發(fā)器集合稱為一個(gè)時(shí)鐘域。最常見(jiàn)的例子是兩個(gè)異步微處理器之間的接口,或微處理器和異步通信通道的接口。在同步邏輯電路的系統(tǒng)中,如果存在兩個(gè)時(shí)鐘域或異步輸入,對(duì)屬于其它時(shí)鐘域的信號(hào),在輸入CLK2域時(shí)需要和CLK2同步。同步方式與時(shí)鐘頻率有關(guān)。DQCLK1CLK2DQDQDQCLK1時(shí)鐘域CLK2時(shí)鐘域異步接口多時(shí)鐘域系統(tǒng)許多系統(tǒng)要求在同一設(shè)計(jì)內(nèi)采用多時(shí)鐘,每個(gè)時(shí)鐘驅(qū)動(dòng)D觸發(fā)器的亞穩(wěn)態(tài)(metastability)概念當(dāng)某個(gè)異步信號(hào)被送入一個(gè)同步觸發(fā)器時(shí),就可能發(fā)生亞穩(wěn)態(tài)現(xiàn)象。如圖所示,當(dāng)輸入D與時(shí)鐘CLK1同時(shí)在亞穩(wěn)態(tài)時(shí)間窗內(nèi)翻轉(zhuǎn)時(shí),D觸發(fā)器的輸出可能出現(xiàn)一種不是1,也不是0的不確定中間狀態(tài),并可能維持一段時(shí)間,稱亞穩(wěn)態(tài)。DQCLK1異步輸入輸出CLK1DQ亞穩(wěn)態(tài)亞穩(wěn)態(tài)時(shí)間窗D觸發(fā)器的亞穩(wěn)態(tài)(metastability)概念當(dāng)某個(gè)異步CLK1頻率小于CLK2的情況一般要求輸入信號(hào)脈沖寬度至少為1個(gè)CLK2的周期以上(即CLK1慢于CLK2),同步電路和波形如下。注意,同步輸出有一個(gè)CLK2周期的不確定性。CLK1頻率小于CLK2的情況一般要求輸入信號(hào)脈沖寬度至少為CLK1頻率大于CLK2的情況假設(shè)輸入信號(hào)脈沖寬度可能會(huì)小于1個(gè)CLK2時(shí)鐘周期寬度,且輸入信號(hào)的速率較慢,三個(gè)CLK2時(shí)鐘后才會(huì)再來(lái),同步電路和波形如下。FF3DQFF2DQSignalsynchedtoCLK2(同步于CLK2的信號(hào))SignalfromCLK1domain(CLK1的相關(guān)信號(hào))CLK2Guardsagainstmetastability(防止不確定狀態(tài))CLK2SignalfromCLK1FF2OutputFF3OutputFF1DQVCCFF1OutputRCLK1頻率大于CLK2的情況假設(shè)輸入信號(hào)脈沖寬度可能會(huì)小于多時(shí)鐘域的其它情況若CLK1域的輸出信號(hào)瞬時(shí)速率高于CLK2,但平均速率低于CLK2,可以用異步FIFO實(shí)現(xiàn)互連。若CLK1域的輸出信號(hào)平均速率高于CLK2,無(wú)法互連。多時(shí)鐘域電路的互連要按異步輸入信號(hào)處理,同步化實(shí)現(xiàn)方法應(yīng)具體電路具體分析,核心是減小亞穩(wěn)態(tài)的影響。在許多應(yīng)用中只將異步信號(hào)同步化還是不夠的,當(dāng)系統(tǒng)中有兩個(gè)或兩個(gè)以上非同源時(shí)鐘的時(shí)候,數(shù)據(jù)的建立和保持時(shí)間很難得到保證,設(shè)計(jì)人員將面臨復(fù)雜的時(shí)序分析問(wèn)題。同時(shí)FPGA的全局時(shí)鐘資源有限,可能不夠。較好的方法是將非同源時(shí)鐘進(jìn)行時(shí)鐘域合并。這時(shí)就需要使用帶使能端的D觸發(fā)器,并引入一個(gè)高頻時(shí)鐘來(lái)實(shí)現(xiàn)時(shí)鐘域合并。多時(shí)鐘域的其它情況若CLK1域的輸出信號(hào)瞬時(shí)速率高于CLK2一種時(shí)鐘域合并方法QDENA3M_ENDatainDataoutQDENADatainDataoutQDQD20M_CLKQDQD3M_CLK5M_CLK5M_EN如圖示,系統(tǒng)有兩個(gè)不同源時(shí)鐘3MHz、5MHz,分兩個(gè)時(shí)鐘域?,F(xiàn)引入一個(gè)20MHz時(shí)鐘,將3MHz和5MHz時(shí)鐘同步化。圖中的D觸發(fā)器及其后的非門和與門構(gòu)成了時(shí)鐘上升沿檢測(cè)電路,輸出分別為3M-EN和5M-EN。把20MHz的時(shí)鐘作為系統(tǒng)時(shí)鐘,同時(shí)讓3M-EN和5M-EN控制所有觸發(fā)器的使能端。這樣我們就實(shí)現(xiàn)了非同源時(shí)鐘域的合并。3M_CLKQD5M_CLKQDDatainDatainDataoutDataout=>一種時(shí)鐘域合并方法QDENA3M_ENDatainData一種時(shí)鐘域合并方法如圖示時(shí)鐘時(shí)序波形,時(shí)鐘使能3M_EN、5M_EN分別使能20M_CLK部分時(shí)鐘,使有效的時(shí)鐘信號(hào)平均等效頻率分別為3M_CLK、5M_CLK。使能的時(shí)鐘信號(hào)一種時(shí)鐘域合并方法如圖示時(shí)鐘時(shí)序波形,時(shí)鐘使能3M_EN、5同步系統(tǒng)復(fù)位的規(guī)劃為使系統(tǒng)工作穩(wěn)定,并便于測(cè)試,所有觸發(fā)器都應(yīng)設(shè)置復(fù)位端。觸發(fā)器的復(fù)位信號(hào)是一個(gè)異步邏輯輸入端,對(duì)毛刺非常敏感。較好的全局復(fù)位方式是設(shè)置一個(gè)芯片主復(fù)位引腳RESET,并用專門模塊設(shè)計(jì)復(fù)位電路,給電路中每個(gè)觸發(fā)器送復(fù)位信號(hào)。與全局時(shí)鐘引腳類似,幾乎所有FPGA器件都有專門的全局清零引腳和全局置位引腳。在一般情況下使用芯片的全局同步或異步清零/置位信號(hào),可以簡(jiǎn)化設(shè)計(jì)、節(jié)省面積。如果必須從器件內(nèi)產(chǎn)生清零或置位信號(hào),則要按照“門控時(shí)鐘”的設(shè)計(jì)原則去建立這些信號(hào),確保復(fù)位信號(hào)中不會(huì)出現(xiàn)毛刺。同步系統(tǒng)復(fù)位的規(guī)劃為使系統(tǒng)工作穩(wěn)定,并便于測(cè)試,所有觸發(fā)器都復(fù)位電路1、用FPGA的PLL鎖定輸出LOCK作為電路復(fù)位rst_n;2、設(shè)計(jì)RESET同步電路。PLLclkresetclk_plllock復(fù)位同步電路clkresetrst_n復(fù)位電路1、用FPGA的PLL鎖定輸出LOCK作為電路復(fù)位r自頂向下系統(tǒng)設(shè)計(jì)原則自頂向下的設(shè)計(jì)原則是首先定義好頂層功能,然后再用底層的具體實(shí)現(xiàn)去充實(shí)這些功能。它是設(shè)計(jì)復(fù)雜數(shù)字系統(tǒng)普遍采用的設(shè)計(jì)方法。自頂向下的設(shè)計(jì)方法是從一個(gè)寫(xiě)好的系統(tǒng)設(shè)計(jì)規(guī)范開(kāi)始,通過(guò)系統(tǒng)設(shè)計(jì)、模塊設(shè)計(jì)與仿真驗(yàn)證、系統(tǒng)功能仿真驗(yàn)證、系統(tǒng)實(shí)現(xiàn)與仿真驗(yàn)證幾個(gè)階段,逐步細(xì)化設(shè)計(jì),直到實(shí)現(xiàn)系統(tǒng)設(shè)計(jì)規(guī)范要求。在自頂向下設(shè)計(jì)中,撰寫(xiě)完善的設(shè)計(jì)文檔是與設(shè)計(jì)同樣重要的。對(duì)于一個(gè)比較復(fù)雜的設(shè)計(jì)來(lái)說(shuō),系統(tǒng)和各模塊之間關(guān)系較復(fù)雜,在設(shè)計(jì)文檔中對(duì)整個(gè)設(shè)計(jì)進(jìn)行詳細(xì)的描述,才能保證設(shè)計(jì)者能夠在較短時(shí)間內(nèi)掌握整個(gè)設(shè)計(jì)方案,順利完成設(shè)計(jì)工作。自頂向下系統(tǒng)設(shè)計(jì)原則自頂向下的設(shè)計(jì)原則是首先定義好頂層功能,自頂向下設(shè)計(jì)-系統(tǒng)設(shè)計(jì)規(guī)范系統(tǒng)概述系統(tǒng)目標(biāo)(包括系統(tǒng)實(shí)現(xiàn)的功能定義及性能指標(biāo))系統(tǒng)設(shè)計(jì)依據(jù)(主要的工作原理,關(guān)鍵算法等)關(guān)鍵技術(shù)系統(tǒng)實(shí)現(xiàn)其它要求(包括硬件體系結(jié)構(gòu)、數(shù)據(jù)流、控制流的特殊要求,系統(tǒng)實(shí)現(xiàn)價(jià)格、面積、功耗、封裝等其它要求)系統(tǒng)驗(yàn)證及測(cè)試要求自頂向下設(shè)計(jì)-系統(tǒng)設(shè)計(jì)規(guī)范系統(tǒng)概述自頂向下設(shè)計(jì)-系統(tǒng)設(shè)計(jì)系統(tǒng)設(shè)計(jì)論述。包括對(duì)系統(tǒng)詳細(xì)的分析與設(shè)計(jì)策略、系統(tǒng)體系結(jié)構(gòu)框圖、層次結(jié)構(gòu)框圖、各個(gè)模塊的劃分和功能定義、系統(tǒng)時(shí)鐘和復(fù)位規(guī)劃。芯片與封裝選擇,包括芯片引腳功能和時(shí)序說(shuō)明,輸出驅(qū)動(dòng)能力、輸入輸出電平。系統(tǒng)各模塊輸入輸出引腳功能和時(shí)序說(shuō)明。系統(tǒng)各模塊的實(shí)現(xiàn)策略,如是否用IP;關(guān)鍵算法流程或時(shí)序設(shè)計(jì)。系統(tǒng)驗(yàn)證、測(cè)試方案與可測(cè)性設(shè)計(jì)。自頂向下設(shè)計(jì)-系統(tǒng)設(shè)計(jì)系統(tǒng)設(shè)計(jì)論述。包括對(duì)系統(tǒng)詳細(xì)的分析與設(shè)自頂向下設(shè)計(jì)-層次化與模塊劃分原則頂層設(shè)計(jì):只包含功能模塊、獨(dú)立時(shí)鐘模塊、獨(dú)立復(fù)位模塊和輸入輸出管腳定義,不含邏輯電路。模塊劃分應(yīng)無(wú)跨層間信號(hào)互連。頂層模塊A模塊B模塊A.U1模塊A.U2模塊B.U1模塊B.U2自頂向下設(shè)計(jì)-層次化與模塊劃分原則頂層設(shè)計(jì):只包含功能模塊、自頂向下設(shè)計(jì)-層次化與模塊劃分原則獨(dú)立模塊盡量加寄存器輸出,便于時(shí)序調(diào)整。相關(guān)邏輯電路劃在一個(gè)模塊內(nèi),使模塊間互連最少。將相同優(yōu)化目標(biāo)的邏輯劃在一個(gè)模塊內(nèi),便于優(yōu)化。如速度要求一樣的邏輯放在一個(gè)模塊中,便于對(duì)模塊設(shè)置速度約束。時(shí)序要求不高的邏輯可放在一個(gè)模塊。異步輸入輸出接口和時(shí)鐘域間接口劃分為單獨(dú)模塊,并盡量小。存儲(chǔ)器劃分為獨(dú)立模塊。模塊規(guī)模要適當(dāng),便于驗(yàn)證和管理。自頂向下設(shè)計(jì)-層次化與模塊劃分原則獨(dú)立模塊盡量加寄存器輸出,自頂向下設(shè)計(jì)-模塊設(shè)計(jì)模塊的體系結(jié)構(gòu)與電路設(shè)計(jì)模塊中關(guān)鍵路徑設(shè)計(jì)及說(shuō)明模塊的測(cè)試方法與可測(cè)性設(shè)計(jì)模塊的HDL描述,功能仿真檢查結(jié)果模塊的綜合約束條件(包括扇入、扇出,速度要求、面積要求等)模塊的面積、速度和功耗估算自頂向下設(shè)計(jì)-模塊設(shè)計(jì)模塊的體系結(jié)構(gòu)與電路設(shè)計(jì)組合邏輯設(shè)計(jì)規(guī)則設(shè)計(jì)無(wú)組合環(huán):組合電路輸出不能在沒(méi)有通過(guò)同步延時(shí)單元的情況下反饋回同一組合邏輯。DQDQ組合邏輯設(shè)計(jì)規(guī)則設(shè)計(jì)無(wú)組合環(huán):組合電路輸出不能在沒(méi)有通過(guò)同步組合邏輯設(shè)計(jì)規(guī)則不用組合邏輯產(chǎn)生延時(shí),延時(shí)總是由時(shí)序電路產(chǎn)生。不要用組合邏輯產(chǎn)生脈沖,用時(shí)序電路產(chǎn)生。DQ組合邏輯設(shè)計(jì)規(guī)則不用組合邏輯產(chǎn)生延時(shí),延時(shí)總是由時(shí)序電路產(chǎn)生組合邏輯設(shè)計(jì)規(guī)則三態(tài)門要防止多驅(qū)動(dòng)競(jìng)爭(zhēng)(總線競(jìng)爭(zhēng))。三態(tài)總線不要處于懸浮狀態(tài)。三態(tài)邏輯只用于芯片的雙向端口。FPGA內(nèi)部總線使用多路選擇器實(shí)現(xiàn)。AmuxBmuxCmux組合邏輯設(shè)計(jì)規(guī)則三態(tài)門要防止多驅(qū)動(dòng)競(jìng)爭(zhēng)(總線競(jìng)爭(zhēng))。Amux同步邏輯設(shè)計(jì)規(guī)則多驅(qū)動(dòng)在測(cè)試平臺(tái)中常出現(xiàn),但在設(shè)計(jì)中應(yīng)禁止使用。例:always@(posedgeclk)if(rst)sig<=4’b0;elseif(condition1)sig<=express1;

always@(posedgeclk)if(condition2)sig<=express2;

除非特殊情況,不建議在同一模塊中上、下時(shí)鐘沿混用。等效減少時(shí)鐘周期,不利于時(shí)序分析。多驅(qū)動(dòng)同步邏輯設(shè)計(jì)規(guī)則多驅(qū)動(dòng)在測(cè)試平臺(tái)中常出現(xiàn),但在設(shè)計(jì)中應(yīng)禁止使同步邏輯設(shè)計(jì)規(guī)則不用if-else作為完整選擇,容易出錯(cuò)。例:

always@(posedgeclk)if(rst)sig<=4’b0;if(condition1)//elseifsig<=express1;Case語(yǔ)句不要遺漏default,if語(yǔ)句條件要完備。Always語(yǔ)句應(yīng)使用完整的敏感量表,否則容易使仿真與綜合不一致,或產(chǎn)生非預(yù)期的鎖存器。同步邏輯設(shè)計(jì)規(guī)則不用if-else作為完整選擇,容易出錯(cuò)。例同步邏輯設(shè)計(jì)規(guī)則不要混合使用同步和異步復(fù)位,綜合可能出問(wèn)題。

always@(posedgeclkorposedgerst)if(rst|syn_rst)sig<=4’b0;elseif(condition1)sig<=express1;改為:always@(posedgeclkorposedgerst)if(rst)sig<=4’b0;if(syn_rst)sig<=4’b0;elseif(condition1)sig<=express1;同步邏輯設(shè)計(jì)規(guī)則不要混合使用同步和異步復(fù)位,綜合可能出問(wèn)題。同步邏輯設(shè)計(jì)規(guī)則狀態(tài)機(jī)設(shè)計(jì)一定要有初始復(fù)位狀態(tài)。較大狀態(tài)機(jī)建議用one-hot編碼方式。未用狀態(tài)一定要明確處理。建議使用單獨(dú)的狀態(tài)轉(zhuǎn)移always過(guò)程塊,輸入組合邏輯和輸出組合邏輯always過(guò)程塊的設(shè)計(jì)方式。同步邏輯設(shè)計(jì)規(guī)則狀態(tài)機(jī)設(shè)計(jì)一定要有初始復(fù)位狀態(tài)。同步邏輯設(shè)計(jì)規(guī)則資源共享。例:

always@(aorborcordorsel)sum=sel?(a+b):(c+d);------------------------------------------------always@(aorborcordorsel)begins1=sel?a:c;s2=sel?b:d;sum=s1+s2;end冗余邏輯。例:regsig1/*synthesispreserve*/;regsig2/*synthesispreserve*/;

always@(posedgeclkorposedgerst)if(rst)beginsig1<=1’b0;sig2<=1’b0;endelseif(condition1)beginsig1<=express1;sig2<=express1;end同步邏輯設(shè)計(jì)規(guī)則資源共享。例:冗余邏輯。例:自頂向下設(shè)計(jì)-系統(tǒng)級(jí)仿真與實(shí)現(xiàn)系統(tǒng)最終完成的HDL設(shè)計(jì)描述。系統(tǒng)仿真激勵(lì)文件、測(cè)試文件及功能仿真結(jié)果分析。系統(tǒng)級(jí)綜合約束條件(包括器件扇出配置,關(guān)鍵路徑約束,輸入輸出約束,時(shí)鐘約束,速度、面積和功耗約束等);得到綜合后網(wǎng)表文件。系統(tǒng)布局布線約束條件及布局布線結(jié)果。系統(tǒng)靜態(tài)時(shí)序分析和時(shí)序仿真結(jié)果分析。設(shè)計(jì)實(shí)現(xiàn)后系統(tǒng)電路面積、速度和功耗估算。最終產(chǎn)生FPGA的編程文件。驗(yàn)證本設(shè)計(jì)實(shí)現(xiàn)的系統(tǒng)滿足系統(tǒng)設(shè)計(jì)規(guī)范要求。自頂向下設(shè)計(jì)-系統(tǒng)級(jí)仿真與實(shí)現(xiàn)系統(tǒng)最終完成的HDL設(shè)計(jì)描述。系統(tǒng)級(jí)常用約束I/O驅(qū)動(dòng)約束:電平值、驅(qū)動(dòng)電流、集電極開(kāi)路、上拉電阻I/O驅(qū)動(dòng)約束:Tsu,Th,Tco,Tpd定位約束(location):管腳定位、邏輯單元定位。全局時(shí)鐘約束:多個(gè)獨(dú)立時(shí)鐘、關(guān)聯(lián)時(shí)鐘時(shí)序約束:多周期路徑,偽路徑切斷,扇出約束:FPGA一般取12,16,24,32等,取決與速度需求。修正保持時(shí)間違例系統(tǒng)級(jí)常用約束I/O驅(qū)動(dòng)約束:電平值、驅(qū)動(dòng)電流、集電極開(kāi)路、設(shè)計(jì)實(shí)例:自動(dòng)交通控制系統(tǒng)系統(tǒng)設(shè)計(jì)規(guī)范:系統(tǒng)概述設(shè)計(jì)一個(gè)具有主、支干道十字路口的交通燈自動(dòng)控制芯片。系統(tǒng)目標(biāo)當(dāng)主干道與支干道均無(wú)車輛要求通行時(shí),主干道應(yīng)保持暢通,亮綠燈,支干道亮紅燈。如果主干道無(wú)車,支干道有車,則允許支干道通行,主干道亮紅燈,支干道亮綠燈。如果主干道和支干道均有車要求通行,則兩者應(yīng)交替通行,并要求主干道每次通行30秒,支干道每次通行20秒,并顯示剩余時(shí)間。每次綠燈變紅燈時(shí),黃燈應(yīng)先亮3秒鐘,并顯示綠燈和黃燈剩余時(shí)間。系統(tǒng)設(shè)計(jì)依據(jù):主、支干道上有車時(shí),車輛傳感器輸出為高電平。系統(tǒng)實(shí)現(xiàn)要求:要求用FPGA實(shí)現(xiàn)該控制器。系統(tǒng)驗(yàn)證及測(cè)試要求:搭建模擬測(cè)試平臺(tái)測(cè)試。設(shè)計(jì)實(shí)例:自動(dòng)交通控制系統(tǒng)系統(tǒng)設(shè)計(jì)規(guī)范:系統(tǒng)設(shè)計(jì)-設(shè)計(jì)分析系統(tǒng)設(shè)計(jì)分析

根據(jù)自動(dòng)交通控制系統(tǒng)設(shè)計(jì)規(guī)范,可對(duì)該系統(tǒng)的工作過(guò)程作如下分析:一般情況下,如果主干道和支干道均無(wú)車輛要求通行,應(yīng)該保證主干道綠燈亮,支干道紅燈亮,剩余時(shí)間按30秒循環(huán)顯示。若支干道有車輛要求通行,主干道無(wú)車輛,則應(yīng)允許支干道車輛通行;在支干道有車輛通行時(shí),若主干道無(wú)車輛要求通行,則支干道始終保持暢通,剩余時(shí)間按20秒循環(huán)顯示;如果此時(shí)支干道已無(wú)車輛要求通行,或主干道有車輛要求通行,并且支干道通行時(shí)間已超過(guò)20秒鐘,則應(yīng)立刻準(zhǔn)備使主干道通行。若主干道、支干道均有車輛要求通行,則應(yīng)先保證主干道通行30秒鐘后,允許支干道通行。在允許主干道通行前,應(yīng)先使支干道的黃燈亮3秒鐘,主干道紅燈保持3秒鐘后,變成主干道綠燈亮,支干道紅燈亮。在允許支干道車輛通行前,應(yīng)先使主干道黃燈亮3秒鐘,支干道紅燈保持3秒鐘后,變成主干道紅燈亮,支干道綠燈亮。據(jù)此工作過(guò)程,設(shè)計(jì)系統(tǒng)框圖如圖所示。

系統(tǒng)設(shè)計(jì)-設(shè)計(jì)分析系統(tǒng)設(shè)計(jì)分析系統(tǒng)設(shè)計(jì)-模塊劃分與結(jié)構(gòu)框圖系統(tǒng)結(jié)構(gòu)框圖Clock_cntTR_ctlDisp_ctlmredmgreenmyellowbgreenbyellowbreds_20ss_3ss_30scnt_okd_time[6:0]d_out[7:0]d_col[1:0]clkresetm_reqb_req如圖示、系統(tǒng)分為三個(gè)模塊:TR_ctl:交通燈控制。Clock_cnt:定時(shí)計(jì)數(shù)。Disp_ctl:剩余時(shí)間顯示。輸入輸出信號(hào):clk:系統(tǒng)時(shí)鐘reset:’1’,系統(tǒng)復(fù)位b_req:’1’,支干道通行請(qǐng)求m_req;‘1’,主干道通行請(qǐng)求d_out[7:0]:顯示數(shù)據(jù)輸出d_col[1:0];動(dòng)態(tài)顯示LED選擇mgreen:‘1’,主干道綠燈亮myellow:‘1’,主干道黃燈亮mred:‘1’,主干道紅燈亮bgreen:‘1’,支干道綠燈亮byellow:‘1’,支干道黃燈亮bred:‘1’,支干道紅燈亮系統(tǒng)設(shè)計(jì)-模塊劃分與結(jié)構(gòu)框圖系統(tǒng)結(jié)構(gòu)框圖Clock_cntT系統(tǒng)設(shè)計(jì)-頂層設(shè)計(jì)系統(tǒng)時(shí)鐘和復(fù)位規(guī)劃:本設(shè)計(jì)采用一個(gè)全局時(shí)鐘clk和復(fù)位reset。芯片與封裝選擇:本設(shè)計(jì)用EP1C3TFPGA實(shí)現(xiàn),144腳封裝,輸入輸出為L(zhǎng)VTTL電平。系統(tǒng)頂層模塊設(shè)計(jì)與各模塊輸入輸出信號(hào)如圖示。系統(tǒng)各模塊功能說(shuō)明。TR_ctl:交通燈控制模塊。根據(jù)主、支干道車輛通行請(qǐng)求和通行規(guī)則,控制交通燈??刂贫〞r(shí)計(jì)數(shù)模塊啟動(dòng),并接收定時(shí)到信號(hào)。Clock_cnt:定時(shí)計(jì)數(shù)模塊。接收TR_ctl的定時(shí)啟動(dòng)控制,s_3s、s_20s、s_30s分別為3秒、20秒、30秒計(jì)時(shí)初值加載和減法計(jì)數(shù)啟動(dòng)的控制脈沖,為‘1’時(shí)啟動(dòng)相應(yīng)計(jì)時(shí)。cnt_ok是計(jì)時(shí)到指示脈沖,為‘1’表示已減到0,計(jì)時(shí)時(shí)間到。d_time[6:0]為十進(jìn)制計(jì)時(shí)剩余時(shí)間,其中d_time[6:4]為十位數(shù),d_time[3:0]為個(gè)位數(shù)。Disp_ctl:剩余時(shí)間顯示控制模塊,用于控制顯示綠燈和黃燈的剩余時(shí)間。采用2個(gè)7段LED動(dòng)態(tài)顯示方式。系統(tǒng)設(shè)計(jì)-頂層設(shè)計(jì)系統(tǒng)時(shí)鐘和復(fù)位規(guī)劃:本設(shè)計(jì)采用一個(gè)全局時(shí)鐘系統(tǒng)設(shè)計(jì)-頂層模塊設(shè)計(jì)系統(tǒng)設(shè)計(jì)-頂層模塊設(shè)計(jì)系統(tǒng)設(shè)計(jì)-系統(tǒng)測(cè)試方案系統(tǒng)驗(yàn)證、測(cè)試方案:采用quartus2的功能和時(shí)序仿真分析,驗(yàn)證設(shè)計(jì)的正確性。在Mars-EP1C3-EDA實(shí)驗(yàn)平臺(tái)上實(shí)現(xiàn)本設(shè)計(jì),并測(cè)試其正確性。具體方案如下。(注:KEY1、KEY2是異步輸入,需同步處理。)主干道LED顯示燈支干道LED顯示燈EP1C3LD1~LD3LD7~LD9KEY1KEY2d_out[7:0]d_col[1]剩余時(shí)間的二位7段LED顯示KEY1、KEY2模仿主、支干道通行請(qǐng)求,按下表示無(wú)車通行。d_col[0]abcdefgdp系統(tǒng)設(shè)計(jì)-系統(tǒng)測(cè)試方案系統(tǒng)驗(yàn)證、測(cè)試方案:主干道LED支干道系統(tǒng)設(shè)計(jì)-實(shí)驗(yàn)板信號(hào)定義查閱實(shí)驗(yàn)板資料,確定相關(guān)實(shí)驗(yàn)板引腳信號(hào)分配如下:本設(shè)計(jì)信號(hào)名實(shí)驗(yàn)板信號(hào)名FPGA引腳備注本設(shè)計(jì)信號(hào)名實(shí)驗(yàn)板信號(hào)名FPGA引腳備注d_out[0]display7p5低顯dp段mgreenLD5p75低燈亮d_out[1]display6p4低顯g段myellowLD3p79低燈亮d_out[2]display5p3低顯f段mredLD1p85低燈亮d_out[3]display4p2低顯e段bgreenLD11p74低燈亮d_out[4]display3p1低顯d段byellowLD9p78低燈亮d_out[5]display2p143低顯c段bredLD7p84低燈亮d_out[6]display1p141低顯b段m_reqKEY1p107按下為低d_out[7]display0p142低顯a段b_reqKEY2p106按下為低d_col[1]Dis_A1p27低顯示clkCLK_40Mp1640M時(shí)鐘d_col[0]Dis_A2p26低顯示resetSYS_RSTp144低復(fù)位注:實(shí)驗(yàn)時(shí),實(shí)驗(yàn)板上J1連(2,3),J4連接,J3斷開(kāi)。電源接FPGA擴(kuò)展板。系統(tǒng)設(shè)計(jì)-實(shí)驗(yàn)板信號(hào)定義查閱實(shí)驗(yàn)板資料,確定相關(guān)實(shí)驗(yàn)板引腳信模塊設(shè)計(jì)-TR_ctl模塊設(shè)計(jì)TR_ctl模塊的算法狀態(tài)機(jī)設(shè)計(jì):狀態(tài)S1:主干道綠燈支干道紅燈狀態(tài)S2:主干道黃燈支干道紅燈狀態(tài)S3:主干道紅燈支干道綠燈狀態(tài)S4:主干道紅燈支干道黃燈啟動(dòng)s_3s<=0;s_20s<=0;s_30s<=1;cnt_ok=1?b_req=1?s_30s<=0s_3s<=1s_30s<=1s_20s<=1s_3s<=1cnt_ok=1?cnt_ok=1?cnt_ok=1?b_req=1&&m_req=0?s_3s<=0s_20s<=0s_3s<=0yynnyns_20s<=1nnyys_30s<=1yn模塊設(shè)計(jì)-TR_ctl模塊設(shè)計(jì)TR_ctl模塊的算法狀態(tài)機(jī)模塊設(shè)計(jì)-clock_cnt模塊設(shè)計(jì)clock_cnt模塊設(shè)計(jì):該模塊可以分為秒脈沖產(chǎn)生和初值可控的十進(jìn)制計(jì)數(shù)器兩部分,如下圖所示。秒脈沖產(chǎn)生:對(duì)40M時(shí)鐘進(jìn)行計(jì)數(shù),計(jì)數(shù)到40,000,000時(shí)產(chǎn)生秒計(jì)數(shù)使能脈沖second_en。初值可控的十進(jìn)制計(jì)數(shù)器:據(jù)不同的加載脈沖s_3s、s_20s、s_30s分別加載計(jì)數(shù)初值3、20、30秒。然后開(kāi)始減法計(jì)數(shù),減到0時(shí),產(chǎn)生計(jì)數(shù)到脈沖cnt_ok。其中輸出d_time[6:4]為十位數(shù),d_time[3:0]為個(gè)位數(shù)。秒脈沖產(chǎn)生初值可控的十進(jìn)制計(jì)數(shù)器s_3ss_20ss_30sclkd_time[6:0]cnt_oksecond_en模塊設(shè)計(jì)-clock_cnt模塊設(shè)計(jì)clock_cnt模塊模塊設(shè)計(jì)-disp_ctl模塊設(shè)計(jì)disp_ctl模塊設(shè)計(jì):該模塊可以分為L(zhǎng)ED動(dòng)態(tài)顯示控制、顯示數(shù)據(jù)選擇和LED7段顯示譯碼三部分,如圖所示。LED動(dòng)態(tài)顯示控制:將時(shí)鐘分頻到50HZ,交替使d_col[1]和d_col[0]為‘0’。顯示數(shù)據(jù)選擇:選擇十位或個(gè)位顯示,最大到70秒。LED7段顯示譯碼:LED動(dòng)態(tài)顯示控制顯示數(shù)據(jù)選擇LED7段顯示譯碼d_time[6:4]d_time[3:0]d_out[7:0]d_col[1:0]clk十進(jìn)制數(shù)LED顯示編碼08'b0000_001118'b1001_111128'b0010_010138'b0000_110148'b1001_100158'b0100_100168'b0100_000178'b0001_111188'b0000_000198'b0001_1001模塊設(shè)計(jì)-disp_ctl模塊設(shè)計(jì)disp_ctl模塊設(shè)計(jì)模塊設(shè)計(jì)-TR_ctl的HDL描述moduleTR_ctl(clk,reset,m_req,b_req,cnt_ok,s_3s,s_20s,s_30s,mgreen,myellow,mred,bgreen,byellow,bred);//模塊端口說(shuō)明 inputclk; inputreset; inputm_req; inputb_req; inputcnt_ok; outputs_3s;regs_3s; outputs_20s;regs_20s; outputs_30s;regs_30s; outputmgreen;regmgreen; outputmyellow;regmyellow; outputmred;regmred; outputbgreen;regbgreen; outputbyellow;regbyellow; outputbred;regbred;//變量說(shuō)明regm_req_s0,b_req_s0,m_req_s,b_req_s;reg[1:0]current_state,next_state;//參數(shù)說(shuō)明parameterS1=2‘b00,S2=2’b01,//狀態(tài)機(jī)編碼S3=2'b10,S4=2'b11;//輸入同步電路always@(negedgeresetorposedgeclk)if(!reset)beginm_req_s0<=0;b_req_s0<=0;m_req_s<=0;b_req_s<=0;endelsebeginm_req_s0<=~m_req;b_req_s0<=~b_req;m_req_s<=m_req_s0;b_req_s<=b_req_s0;End模塊設(shè)計(jì)-TR_ctl的HDL描述moduleTR_ct模塊設(shè)計(jì)-TR_ctl的HDL描述續(xù)1//狀態(tài)機(jī)組合邏輯always@(cnt_okorm_req_sorb_req_sorcurrent_state)begincase(current_state)S1:begin//主干道綠,支干道紅mgreen<=0;myellow<=1;mred<=1; bgreen<=1;byellow<=1;bred<=0; s_3s<=0;s_20s<=0;s_30s<=0; if(cnt_ok==1)//計(jì)時(shí)時(shí)間到 if(b_req_s==0)begin//支干道有車. s_3s<=1; next_state<=S2; end elsebegin//支干道無(wú)車. s_30s<=1; next_state<=S1; end else//計(jì)時(shí)未到 next_state<=S1; endS2:begin//主干道黃,支干道紅mgreen<=1;myellow<=0;mred<=1; bgreen<=1;byellow<=1;bred<=0; s_3s<=0;s_20s<=0;s_30s<=0; if(cnt_ok==1)begin//計(jì)時(shí)時(shí)間到 s_20s<=1; next_state<=S3; end else next_state<=S2; end模塊設(shè)計(jì)-TR_ctl的HDL描述續(xù)1//狀態(tài)機(jī)組合邏輯模塊設(shè)計(jì)-TR_ctl的HDL描述續(xù)2S3:begin//支干道綠,主干道紅mgreen<=1;myellow<=1;mred<=0;bgreen<=0;byellow<=1;bred<=1;s_3s<=0;s_20s<=0;s_30s<=0;if(cnt_ok==1)//支干道有車,主干道無(wú)車if(b_req_s==0&&m_req_s==1)begins_20s<=1; next_state<=S3; end elsebegin s_3s<=1; next_state<=S4; end else next_state<=S3; endS4:begin//支干道黃,主干道紅mgreen<=1;myellow<=1;mred<=0; bgreen<=1;byellow<=0;bred<=1; s_3s<=0;s_20s<=0;s_30s<=0; if(cnt_ok==1)begin s_30s<=1; next_state<=S1; end else next_state<=S4;endendcaseend//狀態(tài)機(jī)狀態(tài)轉(zhuǎn)移邏輯always@(negedgeresetorposedgeclk)if(!reset)current_state<=S1;elsecurrent_state<=next_state;endmodule模塊設(shè)計(jì)-TR_ctl的HDL描述續(xù)2S3:begi模塊設(shè)計(jì)-clock_cnt的HDL描述moduleclock_cnt(clk,reset,s_3s,s_20s,s_30s,cnt_ok,d_time);//端口說(shuō)明 inputclk; inputreset; inputs_3s; inputs_20s; inputs_30s; outputcnt_ok; output[6:0]d_time;//變量說(shuō)明 reg[25:0]cnt_clk;reg[2:0]cnt_10;reg[3:0]cnt_1;regsecond_en;//秒脈沖發(fā)生器always@(negedgeresetorposedgeclk)if(!reset)begincnt_clk<=26'd0;second_en<=0;endelseif(cnt_clk!=26‘d40_000_000)begin//分頻26'd40_000_000cnt_clk<=cnt_clk+1;second_en<=0;endelsebegincnt_clk<=26'd0;second_en<=1;end//初值可控的十進(jìn)制減法計(jì)數(shù)器always@(negedgeresetorposedgeclk)if(!reset)begincnt_10<=3'd0;cnt_1<=4'd1;endelseif(second_en==1)beginif(s_3s)begincnt_10<=0;cnt_1<=3;endelseif(s_20s)begincnt_10<=2;cnt_1<=0;endelseif(s_30s)begincnt_10<=3;cnt_1<=0;endelseif(cnt_1==0)begincnt_10<=cnt_10-1;cnt_1<=9;endelsecnt_1<=cnt_1-1;endassigncnt_ok=(cnt_10==0&&cnt_1==1)?second_en:1‘b0;//計(jì)時(shí)到信號(hào)assignd_time={cnt_10,cnt_1};//計(jì)數(shù)輸出endmodule模塊設(shè)計(jì)-clock_cnt的HDL描述module模塊設(shè)計(jì)-disp_ctl的HDL描述moduledisp_ctl(clk,reset,d_time,d_col,d_out);//端口說(shuō)明 inputclk; inputreset; input[6:0]d_time; output[1:0]d_col;reg[1:0]d_col; output[7:0]d_out;reg[7:0]d_out;//變量說(shuō)明 reg[18:0]cnt_disp;wire[3:0]LED_data;//LED動(dòng)態(tài)顯示控制always@(negedgeresetorposedgeclk)if(!reset)begincnt_disp<=19'd0;d_col<=2'b01;endelseif(cnt_disp!=19‘d400_000)//顯示延時(shí)19'd400_000cnt_disp<=cnt_disp+1;elsebegincnt_disp<=19'd0;d_col<=~d_col;end//LED顯示數(shù)據(jù)選擇assignLED_data=(d_col==2'b01)?{1'b0,d_time[6:4]}:d_time[3:0];//LED顯示譯碼邏輯always@(LED_data)begin case(LED_data) 4'b0000:d_out=8'b0000_0011; 4'b0001:d_out=8'b1001_1111; 4'b0010:d_out=8'b0010_0101; 4'b0011:d_out=8'b0000_1101; 4'b0100:d_out=8'b1001_1001; 4'b0101:d_out=8'b0100_1001; 4'b0110:d_out=8'b0100_0001; 4'b0111:d_out=8'b0001_1111; 4'b1000:d_out=8'b0000_0001; default:d_out=8'b0001_1001; endcaseendendmodule模塊設(shè)計(jì)-disp_ctl的HDL描述moduled系統(tǒng)級(jí)仿真與實(shí)現(xiàn)-功能仿真驗(yàn)證支干道有車請(qǐng)求通行主干道、支干道均有車請(qǐng)求通行主干道綠燈主干道黃燈主干道紅燈注:功能仿真時(shí),為減少仿真時(shí)間,可以臨時(shí)修改秒延時(shí)和顯示延時(shí)值,而不影響仿真結(jié)果。系統(tǒng)級(jí)仿真與實(shí)現(xiàn)-功能仿真驗(yàn)證支干道有車請(qǐng)求通行主干道、支干系統(tǒng)級(jí)仿真與實(shí)現(xiàn)-實(shí)現(xiàn)結(jié)果報(bào)告系統(tǒng)級(jí)仿真與實(shí)現(xiàn)-實(shí)現(xiàn)結(jié)果報(bào)告本講要點(diǎn)數(shù)字系統(tǒng)設(shè)計(jì)的基本原則:硬件原則面積與速度互訪與平衡原則同步設(shè)計(jì)原則自頂向下的系統(tǒng)設(shè)計(jì)原則同步數(shù)字系統(tǒng)的時(shí)鐘和復(fù)位規(guī)劃:包括全局時(shí)鐘、門控時(shí)鐘、時(shí)鐘偏移、時(shí)鐘域和全局復(fù)位概念,時(shí)鐘域劃分與時(shí)鐘域間信號(hào)的互連方法,異步輸入的同步處理方法。通過(guò)設(shè)計(jì)實(shí)例,深入理解自頂向下設(shè)計(jì)方法中,系統(tǒng)設(shè)計(jì)規(guī)范、系統(tǒng)設(shè)計(jì)、模塊設(shè)計(jì)和系統(tǒng)仿真與實(shí)現(xiàn)各階段的設(shè)計(jì)內(nèi)容,初步掌握規(guī)范的數(shù)字系統(tǒng)設(shè)計(jì)方法。本講要點(diǎn)數(shù)字系統(tǒng)設(shè)計(jì)的基本原則:實(shí)驗(yàn)要求實(shí)驗(yàn):數(shù)字鐘設(shè)計(jì)(6學(xué)時(shí))實(shí)驗(yàn)要求:按如下系統(tǒng)設(shè)計(jì)規(guī)范要求設(shè)計(jì)數(shù)字鐘。數(shù)字鐘系統(tǒng)設(shè)計(jì)規(guī)范:系統(tǒng)概述:設(shè)計(jì)一個(gè)用LED7段顯示器顯示的24小時(shí)制數(shù)字鐘。系統(tǒng)目標(biāo):用8個(gè)LED顯示時(shí)間,如9點(diǎn)25分10秒顯示為,09-25-10。設(shè)置2個(gè)按鍵,按鍵SET用于工作模式選擇,按鍵UP用于設(shè)置數(shù)值。(可選)按SET鍵循環(huán)設(shè)置工作模式為:正常顯示->時(shí)設(shè)置->分設(shè)置->秒設(shè)置。在設(shè)置工作模式時(shí),被設(shè)置相應(yīng)數(shù)字按1秒速率閃爍,其它數(shù)字不變。在設(shè)置工作模式時(shí),按UP鍵一次,被設(shè)置相應(yīng)數(shù)字增加1,加到最大值后再加返回0,如小時(shí)加到23后再加就返回0,分和秒加到59后再加返回0。系統(tǒng)設(shè)計(jì)依據(jù):外部輸入時(shí)鐘為40MHZ。系統(tǒng)實(shí)現(xiàn)要求:要求用Mars-EP1C3-EDA實(shí)驗(yàn)平臺(tái)。芯片與封裝選擇:本設(shè)計(jì)用EP1C3TFPGA實(shí)現(xiàn),144腳封裝,輸入輸出為L(zhǎng)VTTL電平。實(shí)驗(yàn)要求實(shí)驗(yàn):數(shù)字鐘設(shè)計(jì)(6學(xué)時(shí))FPGA管腳分配本設(shè)計(jì)信號(hào)名實(shí)驗(yàn)板信號(hào)名FPGA引腳備注本設(shè)計(jì)信號(hào)名實(shí)驗(yàn)板信號(hào)名FPGA引腳備注d_out[0]display7p5低顯dp段d_col[2]Dis_A6P10低顯示d_out[1]display6p4低顯g段d_col[3]Dis_A5P7低顯示d_out[2]display5p3低顯f段d_col[4]Dis_A4P6低顯示d_out[3]display4p2低顯e段d_col[5]Dis_A3P11低顯示d_out[4]display3p1低顯d段d_col[6]Dis_A2P26低顯示d_out[5]display2p143低顯c段d_col[7]Dis_A1P27低顯示d_out[6]display1p141低顯b段setKEY1p107按下為低d_out[7]display0p142低顯a段upKEY2p106按下為低d_col[0]Dis_A8P31低顯示clkCLK_40Mp1640M時(shí)鐘d_col[1]Dis_A7P28低顯示resetSYS_RSTp144低復(fù)位FPGA管腳分配本設(shè)計(jì)信號(hào)名實(shí)驗(yàn)板信號(hào)名FPGA引腳備注本設(shè)實(shí)驗(yàn)板實(shí)驗(yàn)板此課件下載可自行編輯修改,僅供參考!

感謝您的支持,我們努力做得更好!謝謝此課件下載可自行編輯修改,僅供參考!

感謝您的支持,我們努力最新Verilog課件第十一講數(shù)字系統(tǒng)設(shè)計(jì)原則與設(shè)計(jì)實(shí)例最新Verilog課件第十一講數(shù)字系統(tǒng)設(shè)計(jì)原則與設(shè)計(jì)實(shí)例硬件原則按硬件原則,HDL的正確編寫(xiě)方法是:設(shè)計(jì)者要對(duì)所設(shè)計(jì)的硬件電路功能十分清楚。合理安排電路的數(shù)據(jù)流和控制邏輯,構(gòu)思RTL級(jí)電路體系結(jié)構(gòu)。掌握綜合工具要求和性能。用適當(dāng)?shù)?、綜合工具能理解的HDL語(yǔ)言描述出來(lái)。目前純行為級(jí)的綜合還不成熟,RTL級(jí)綜合仍是主流。在目前主流綜合工具中,部分行為描述語(yǔ)句可以綜合,如c<=a*b的乘法語(yǔ)句,quartus2內(nèi)嵌綜合工具會(huì)綜合成LPM乘法宏模塊。那些行為描述可以綜合,決定于具體的綜合工具,可參考綜合工具的使用手冊(cè)。硬件原則按硬件原則,HDL的正確編寫(xiě)方法是:面積和速度的平衡與互換原則面積是指一個(gè)設(shè)計(jì)消耗的邏輯資源數(shù)量,對(duì)FPGA可以用觸發(fā)器和組合邏輯單元來(lái)度量。速度指設(shè)計(jì)在芯片上穩(wěn)定運(yùn)行時(shí)能夠達(dá)到的最高頻率。面積和速度是一對(duì)矛盾的需求。要求一個(gè)設(shè)計(jì)同時(shí)具有設(shè)計(jì)面積最小,運(yùn)行速度最高是不現(xiàn)實(shí)的。平衡的設(shè)計(jì)目標(biāo)是:在滿足設(shè)計(jì)工作速度要求的前提下,占用最小的芯片面積;或芯片面積一定的情況下,使設(shè)計(jì)的工作速度最高。對(duì)應(yīng)的綜合工具有相關(guān)的綜合策略,如面積優(yōu)先、速度優(yōu)先或平衡方式。面積和速度的互換是IC設(shè)計(jì)的重要思想。如果一個(gè)設(shè)計(jì)時(shí)序余量較大,即工作速度遠(yuǎn)高于設(shè)計(jì)要求,就可以考慮采用串行方式復(fù)用部分邏輯,用速度換面積;反之工作速度不夠時(shí),可采用并行處理提高工作速度,即用面積換速度。當(dāng)面積和速度設(shè)計(jì)要求不能同時(shí)滿足時(shí),采用速度優(yōu)先原則。面積和速度的平衡與互換原則面積是指一個(gè)設(shè)計(jì)消耗的邏輯資源數(shù)量乒乓操作mux1:2處理單元1處理單元2mux2:1緩存1緩存2乒乓操作mux處理單元1處理單元2mux緩存1緩存2串并轉(zhuǎn)換串并轉(zhuǎn)換1:2處理單元1處理單元2并串轉(zhuǎn)換2:1串并轉(zhuǎn)換串并處理單元1處理單元2并串流水線概念Reg組合邏輯延時(shí):Delay=T1+T2+T3RegRegRegRegRegT1T3T2流水線概念組合邏輯延時(shí):T1T3T2同步設(shè)計(jì)原則早期的IC設(shè)計(jì)常用異步設(shè)計(jì),如行波計(jì)數(shù)器和異步脈沖發(fā)生器等,以減少設(shè)計(jì)面積。異步設(shè)計(jì)時(shí)序控制相當(dāng)繁雜而困難,且目前EDA工具多不支持異步設(shè)計(jì),較大規(guī)模的異步設(shè)計(jì)十分費(fèi)時(shí)費(fèi)力。隨著IC技術(shù)發(fā)展,減少器件資源已不是主要問(wèn)題,設(shè)計(jì)的穩(wěn)定可靠、與工藝無(wú)關(guān),減少設(shè)計(jì)周期更為重要。因此同步設(shè)計(jì)是目前IC設(shè)計(jì)的重要原則之一。同步系統(tǒng)設(shè)計(jì)中的基本問(wèn)題:設(shè)計(jì)必須滿足同步觸發(fā)器的建立、保持時(shí)間。同步系統(tǒng)時(shí)鐘、復(fù)位的合理規(guī)劃。注意同步時(shí)鐘域間信號(hào)的轉(zhuǎn)換。同步設(shè)計(jì)原則早期的IC設(shè)計(jì)常用異步設(shè)計(jì),如行波計(jì)數(shù)器和異步脈同步系統(tǒng)時(shí)鐘的規(guī)劃在同步數(shù)字系統(tǒng)設(shè)計(jì)中,設(shè)計(jì)不良的時(shí)鐘將導(dǎo)致系統(tǒng)錯(cuò)誤的行為,特別是在溫度、電壓或制造工藝存在偏差的情況下,很容易出現(xiàn)問(wèn)題,所以可靠的時(shí)鐘規(guī)劃設(shè)計(jì)是非常關(guān)鍵的。在數(shù)字邏輯設(shè)計(jì)時(shí)通常有以下三種時(shí)鐘方式:

全局時(shí)鐘門控時(shí)鐘行波時(shí)鐘同步系統(tǒng)時(shí)鐘的規(guī)劃在同步數(shù)字系統(tǒng)設(shè)計(jì)中,設(shè)計(jì)不良的時(shí)鐘將導(dǎo)致全局時(shí)鐘對(duì)于一個(gè)同步數(shù)字系統(tǒng)設(shè)計(jì)項(xiàng)目來(lái)說(shuō),全局時(shí)鐘是最簡(jiǎn)單和可預(yù)測(cè)的時(shí)鐘。在FPGA設(shè)計(jì)中最好的時(shí)鐘方案是:由專用的全局時(shí)鐘輸入引腳驅(qū)動(dòng)單個(gè)主時(shí)鐘去控制設(shè)計(jì)項(xiàng)目中的每一個(gè)觸發(fā)器。FPGA一般都具有專門的全局時(shí)鐘引腳,在設(shè)計(jì)項(xiàng)目時(shí)應(yīng)盡量采用全局時(shí)鐘,它能夠提供器件中最短的時(shí)鐘到輸出的延時(shí)和時(shí)鐘偏移。全局時(shí)鐘對(duì)于一個(gè)同步數(shù)字系統(tǒng)設(shè)計(jì)項(xiàng)目來(lái)說(shuō),全局時(shí)鐘是最簡(jiǎn)單時(shí)鐘偏移時(shí)序電路在FPGA中實(shí)現(xiàn)時(shí),若不用全局時(shí)鐘,由于時(shí)鐘各部分連線長(zhǎng)短不一致,雖然多個(gè)觸發(fā)器共用一個(gè)時(shí)鐘信號(hào),但觸發(fā)器時(shí)鐘端的信號(hào)延時(shí)并不相同,信號(hào)會(huì)發(fā)生不同的畸變,構(gòu)成時(shí)鐘信號(hào)偏移。DQ_AA3.03.1CLKDinDQ_BB12.53.1DQ_CC3.03.3(a)ExpectedoperationCLKQ_AQ_BQ_C(b)ClockskewedversionA&CQ_AQ_BQ_C(c)B時(shí)鐘偏移時(shí)序電路在FPGA中實(shí)現(xiàn)時(shí),若不用全局時(shí)鐘,由于時(shí)不可靠門控時(shí)鐘例如圖示門控時(shí)鐘將不能正常工作,因RCO信號(hào)有毛刺。QDOUTQAQBQCENCLKENABLERCODATA不希望的毛刺希望的時(shí)鐘上升沿不可靠門控時(shí)鐘例如圖示門控時(shí)鐘將不能正常工作,因RCO信號(hào)有不可靠的門控時(shí)鐘轉(zhuǎn)換為全局時(shí)鐘QDPRNCLRNENAOUTQAQBQCENCLKENABLERCODATA3位二進(jìn)制可逆計(jì)數(shù)器使能的時(shí)鐘上升沿與原設(shè)計(jì)等效作為使能信號(hào)毛刺無(wú)影響不可靠的門控時(shí)鐘轉(zhuǎn)換為全局時(shí)鐘QDPRNCLRNENAOUT行波時(shí)鐘所謂行波時(shí)鐘是指一個(gè)觸發(fā)器的輸出用作另一個(gè)觸發(fā)器的時(shí)鐘輸入。如果仔細(xì)設(shè)計(jì),行波時(shí)鐘可以像全局時(shí)鐘一樣可靠工作,但是行波時(shí)鐘使得與電路有關(guān)的定時(shí)計(jì)算變得很復(fù)雜。行波時(shí)鐘在行波鏈上各觸發(fā)器時(shí)鐘之間產(chǎn)生較大的時(shí)間偏移,使系統(tǒng)的實(shí)際速度下降。同步數(shù)字系統(tǒng)設(shè)計(jì)中一般只用全局時(shí)鐘和門控時(shí)鐘,不用行波時(shí)鐘用T觸發(fā)器構(gòu)成異步計(jì)數(shù)器時(shí),常采用行波時(shí)鐘,一個(gè)觸發(fā)器的輸出作為時(shí)鐘控制下一個(gè)觸發(fā)器的輸入,如下圖:CLKQTCLRNQTCLRNQTCLRNENABLEVCCVCCOUT行波時(shí)鐘所謂行波時(shí)鐘是指一個(gè)觸發(fā)器的輸出用作另一個(gè)觸發(fā)器的時(shí)多時(shí)鐘域系統(tǒng)許多系統(tǒng)要求在同一設(shè)計(jì)內(nèi)采用多時(shí)鐘,每個(gè)時(shí)鐘驅(qū)動(dòng)的觸發(fā)器集合稱為一個(gè)時(shí)鐘域。最常見(jiàn)的例子是兩個(gè)異步微處理器之間的接口,或微處理器和異步通信通道的接口。在同步邏輯電路的系統(tǒng)中,如果存在兩個(gè)時(shí)鐘域或異步輸入,對(duì)屬于其它時(shí)鐘域的信號(hào),在輸入CLK2域時(shí)需要和CLK2同步。同步方式與時(shí)鐘頻率有關(guān)。DQCLK1CLK2DQDQDQCLK1時(shí)鐘域CLK2時(shí)鐘域異步接口多時(shí)鐘域系統(tǒng)許多系統(tǒng)要求在同一設(shè)計(jì)內(nèi)采用多時(shí)鐘,每個(gè)時(shí)鐘驅(qū)動(dòng)D觸發(fā)器的亞穩(wěn)態(tài)(metastability)概念當(dāng)某個(gè)異步信號(hào)被送入一個(gè)同步觸發(fā)器時(shí),就可能發(fā)生亞穩(wěn)態(tài)現(xiàn)象。如圖所示,當(dāng)輸入D與時(shí)鐘CLK1同時(shí)在亞穩(wěn)態(tài)時(shí)間窗內(nèi)翻轉(zhuǎn)時(shí),D觸發(fā)器的輸出可能出現(xiàn)一種不是1,也不是0的不確定中間狀態(tài),并可能維持一段時(shí)間,稱亞穩(wěn)態(tài)。DQCLK1異步輸入輸出CLK1DQ亞穩(wěn)態(tài)亞穩(wěn)態(tài)時(shí)間窗D觸發(fā)器的亞穩(wěn)態(tài)(metastability)概念當(dāng)某個(gè)異步CLK1頻率小于CLK2的情況一般要求輸入信號(hào)脈沖寬度至少為1個(gè)CLK2的周期以上(即CLK1慢于CLK2),同步電路和波形如下。注意,同步輸出有一個(gè)CLK2周期的不確定性。CLK1頻率小于CLK2的情況一般要求輸入信號(hào)脈沖寬度至少為CLK1頻率大于CLK2的情況假設(shè)輸入信號(hào)脈沖寬度可能會(huì)小于1個(gè)CLK2時(shí)鐘周期寬度,且輸入信號(hào)的速率較慢,三個(gè)CLK2時(shí)鐘后才會(huì)再來(lái),同步電路和波形如下。FF3DQFF2DQSignalsynchedtoCLK2(同步于CLK2的信號(hào))SignalfromCLK1domain(CLK1的相關(guān)信號(hào))CLK2Guardsagainstmetastability(防止不確定狀態(tài))CLK2SignalfromCLK1FF2OutputFF3OutputFF1DQVCCFF1OutputRCLK1頻率大于CLK2的情況假設(shè)輸入信號(hào)脈沖寬度可能會(huì)小于多時(shí)鐘域的其它情況若CLK1域的輸出信號(hào)瞬時(shí)速率高于CLK2,但平均速率低于CLK2,可以用異步FIFO實(shí)現(xiàn)互連。若CLK1域的輸出信號(hào)平均速率高于CLK2,無(wú)法互連。多時(shí)鐘域電路的互連要按異步輸入信號(hào)處理,同步化實(shí)現(xiàn)方法應(yīng)具體電路具體分析,核心是減小亞穩(wěn)態(tài)的影響。在許多應(yīng)用中只將異步信號(hào)同步化還是不夠的,當(dāng)系統(tǒng)中有兩個(gè)或兩個(gè)以上非同源時(shí)鐘的時(shí)候,數(shù)據(jù)的建立和保持時(shí)間很難得到保證,設(shè)計(jì)人員將面臨復(fù)雜的時(shí)序分析問(wèn)題。同時(shí)FPGA的全局時(shí)鐘資源有限,可能不夠。較好的方法是將非同源時(shí)鐘進(jìn)行時(shí)鐘域合并。這時(shí)就需要使用帶使能端的D觸發(fā)器,并引入一個(gè)高頻時(shí)鐘來(lái)實(shí)現(xiàn)時(shí)鐘域合并。多時(shí)鐘域的其它情況若CLK1域的輸出信號(hào)瞬時(shí)速率高于CLK2一種時(shí)鐘域合并方法QDENA3M_ENDatainDataoutQDENADatainDataoutQDQD20M_CLKQDQD3M_CLK5M_CLK5M_EN如圖示,系統(tǒng)有兩個(gè)不同源時(shí)鐘3MHz、5MHz,分兩個(gè)時(shí)鐘域?,F(xiàn)引入一個(gè)20MHz時(shí)鐘,將3MHz和5MHz時(shí)鐘同步化。圖中的D觸發(fā)器及其后的非門和與門構(gòu)成了時(shí)鐘上升沿檢測(cè)電路,輸出分別為3M-EN和5M-EN。把20MHz的時(shí)鐘作為系統(tǒng)時(shí)鐘,同時(shí)讓3M-EN和5M-EN控制所有觸發(fā)器的使能端。這樣我們就實(shí)現(xiàn)了非同源時(shí)鐘域的合并。3M_CLKQD5M_CLKQDDatainDatainDataoutDataout=>一種時(shí)鐘域合并方法QDENA3M_ENDatainData一種時(shí)鐘域合并方法如圖示時(shí)鐘時(shí)序波形,時(shí)鐘使能3M_EN、5M_EN分別使能20M_CLK部分時(shí)鐘,使有效的時(shí)鐘信號(hào)平均等效頻率分別為3M_CLK、5M_CLK。使能的時(shí)鐘信號(hào)一種時(shí)鐘域合并方法如圖示時(shí)鐘時(shí)序波形,時(shí)鐘使能3M_EN、5同步系統(tǒng)復(fù)位的規(guī)劃為使系統(tǒng)工作穩(wěn)定,并便于測(cè)試,所有觸發(fā)器都應(yīng)設(shè)置復(fù)位端。觸發(fā)器的復(fù)位信號(hào)是一個(gè)異步邏輯輸入端,對(duì)毛刺非常敏感。較好的全局復(fù)位方式是設(shè)置一個(gè)芯片主復(fù)位引腳RESET,并用專門模塊設(shè)計(jì)復(fù)位電路,給電路中每個(gè)觸發(fā)器送復(fù)位信號(hào)。與全局時(shí)鐘引腳類似,幾乎所有FPGA器件都有專門的全局清零引腳和全局置位引腳。在一般情況下使用芯片的全局同步或異步清零/置位信號(hào),可以簡(jiǎn)化設(shè)計(jì)、節(jié)省面積。如果必須從器件內(nèi)產(chǎn)生清零或置位信號(hào),則要按照“門控時(shí)鐘”的設(shè)計(jì)原則去建立這些信號(hào),確保復(fù)位信號(hào)中不會(huì)出現(xiàn)毛刺。同步系統(tǒng)復(fù)位的規(guī)劃為使系統(tǒng)工作穩(wěn)定,并便于測(cè)試,所有觸發(fā)器都復(fù)位電路1、用FPGA的PLL鎖定輸出LOCK作為電路復(fù)位rst_n;2、設(shè)計(jì)RESET同步電路。PLLclkresetclk_plllock復(fù)位同步電路clkresetrst_n復(fù)位電路1、用FPGA的PLL鎖定輸出LOCK作為電路復(fù)位r自頂向下系統(tǒng)設(shè)計(jì)原則自頂向下的設(shè)計(jì)原則是首先定義好頂層功能,然后再用底層的具體實(shí)現(xiàn)去充實(shí)這些功能。它是設(shè)計(jì)復(fù)雜數(shù)字系統(tǒng)普遍采用的設(shè)計(jì)方法。自頂向下的設(shè)計(jì)方法是從一個(gè)寫(xiě)好的系統(tǒng)設(shè)計(jì)規(guī)范開(kāi)始,通過(guò)系統(tǒng)設(shè)計(jì)、模塊設(shè)計(jì)與仿真驗(yàn)證、系統(tǒng)功能仿真驗(yàn)證、系統(tǒng)實(shí)現(xiàn)與仿真驗(yàn)證幾個(gè)階段,逐步細(xì)化設(shè)計(jì),直到實(shí)現(xiàn)系統(tǒng)設(shè)計(jì)規(guī)范要求。在自頂向下設(shè)計(jì)中,撰寫(xiě)完善的設(shè)計(jì)文檔是與設(shè)計(jì)同樣重要的。對(duì)于一個(gè)比較復(fù)雜的設(shè)計(jì)來(lái)說(shuō),系統(tǒng)和各模塊之間關(guān)系較復(fù)雜,在設(shè)計(jì)文檔中對(duì)整個(gè)設(shè)計(jì)進(jìn)行詳細(xì)的描述,才能保證設(shè)計(jì)者能夠在較短時(shí)間內(nèi)掌握整個(gè)設(shè)計(jì)方案,順利完成設(shè)計(jì)工作。自頂向下系統(tǒng)設(shè)計(jì)原則自頂向下的設(shè)計(jì)原則是首先定義好頂層功能,自頂向下設(shè)計(jì)-系統(tǒng)設(shè)計(jì)規(guī)范系統(tǒng)概述系統(tǒng)目標(biāo)(包括系統(tǒng)實(shí)現(xiàn)的功能定義及性能指標(biāo))系統(tǒng)設(shè)計(jì)依據(jù)(主要的工作原理,關(guān)鍵算法等)關(guān)鍵技術(shù)系統(tǒng)實(shí)現(xiàn)其它要求(包括硬件體系結(jié)構(gòu)、數(shù)據(jù)流、控制流的特殊要求,系統(tǒng)實(shí)現(xiàn)價(jià)格、面積、功耗、封裝等其它要求)系統(tǒng)驗(yàn)證及測(cè)試要求自頂向下設(shè)計(jì)-系統(tǒng)設(shè)計(jì)規(guī)范系統(tǒng)概述自頂向下設(shè)計(jì)-系統(tǒng)設(shè)計(jì)系統(tǒng)設(shè)計(jì)論述。包括對(duì)系統(tǒng)詳細(xì)的分析與設(shè)計(jì)策略、系統(tǒng)體系結(jié)構(gòu)框圖、層次結(jié)構(gòu)框圖、各個(gè)模塊的劃分和功能定義、系統(tǒng)時(shí)鐘和復(fù)位規(guī)劃。芯片與封裝選擇,包括芯片引腳功能和時(shí)序說(shuō)明,輸出驅(qū)動(dòng)能力、輸入輸出電平。系統(tǒng)各模塊輸入輸出引腳功能和時(shí)序說(shuō)明。系統(tǒng)各模塊的實(shí)現(xiàn)策略,如是否用IP;關(guān)鍵算法流程或時(shí)序設(shè)計(jì)。系統(tǒng)驗(yàn)證、測(cè)試方案與可測(cè)性設(shè)計(jì)。自頂向下設(shè)計(jì)-系統(tǒng)設(shè)計(jì)系統(tǒng)設(shè)計(jì)論述。包括對(duì)系統(tǒng)詳細(xì)的分析與設(shè)自頂向下設(shè)計(jì)-層次化與模塊劃分原則頂層設(shè)計(jì):只包含功能模塊、獨(dú)立時(shí)鐘模塊、獨(dú)立復(fù)位模塊和輸入輸出管腳定義,不含邏輯電路。模塊劃分應(yīng)無(wú)跨層間信號(hào)互連。頂層模塊A模塊B模塊A.U1模塊A.U2模塊B.U1模塊B.U2自頂向下設(shè)計(jì)-層次化與模塊劃分原則頂層設(shè)計(jì):只包含功能模塊、自頂向下設(shè)計(jì)-層次化與模塊劃分原則獨(dú)立模塊盡量加寄存器輸出,便于時(shí)序調(diào)整。相關(guān)邏輯電路劃在一個(gè)模塊內(nèi),使模塊間互連最少。將相同優(yōu)化目標(biāo)的邏輯劃在一個(gè)模塊內(nèi),便于優(yōu)化。如速度要求一樣的邏輯放在一個(gè)模塊中,便于對(duì)模塊設(shè)置速度約束。時(shí)序要求不高的邏輯可放在一個(gè)模塊。異步輸入輸出接口和時(shí)鐘域間接口劃分為單獨(dú)模塊,并盡量小。存儲(chǔ)器劃分為獨(dú)立模塊。模塊規(guī)模要適當(dāng),便于驗(yàn)證和管理。自頂向下設(shè)計(jì)-層次化與模塊劃分原則獨(dú)立模塊盡量加寄存器輸出,自頂向下設(shè)計(jì)-模塊設(shè)計(jì)模塊的體系結(jié)構(gòu)與電路設(shè)計(jì)模塊中關(guān)鍵路徑設(shè)計(jì)及說(shuō)明模塊的測(cè)試方法與可測(cè)性設(shè)計(jì)模塊的HDL描述,功能仿真檢查結(jié)果模塊的綜合約束條件(包括扇入、扇出,速度要求、面積要求等)模塊的面積、速度和功耗估算自頂向下設(shè)計(jì)-模塊設(shè)計(jì)模塊的體系結(jié)構(gòu)與電路設(shè)計(jì)組合邏輯設(shè)計(jì)規(guī)則設(shè)計(jì)無(wú)組合環(huán):組合電路輸出不能在沒(méi)有通過(guò)同步延時(shí)單元的情況下反饋回同一組合邏輯。DQDQ組合邏輯設(shè)計(jì)規(guī)則設(shè)計(jì)無(wú)組合環(huán):組合電路輸出不能在沒(méi)有通過(guò)同步組合邏輯設(shè)計(jì)規(guī)則不用組合邏輯產(chǎn)生延時(shí),延時(shí)總是由時(shí)序電路產(chǎn)生。不要用組合邏輯產(chǎn)生脈沖,用時(shí)序電路產(chǎn)生。DQ組合邏輯設(shè)計(jì)規(guī)則不用組合邏輯產(chǎn)生延時(shí),延時(shí)總是由時(shí)序電路產(chǎn)生組合邏輯設(shè)計(jì)規(guī)則三態(tài)門要防止多驅(qū)動(dòng)競(jìng)爭(zhēng)(總線競(jìng)爭(zhēng))。三態(tài)總線不要處于懸浮狀態(tài)。三態(tài)邏輯只用于芯片的雙向端口。FPGA內(nèi)部總線使用多路選擇器實(shí)現(xiàn)。AmuxBmuxCmux組合邏輯設(shè)計(jì)規(guī)則三態(tài)門要防止多驅(qū)動(dòng)競(jìng)爭(zhēng)(總線競(jìng)爭(zhēng))。Amux同步邏輯設(shè)計(jì)規(guī)則多驅(qū)動(dòng)在測(cè)試平臺(tái)中常出現(xiàn),但在設(shè)計(jì)中應(yīng)禁止使用。例:always@(posedgeclk)if(rst)sig<=4’b0;elseif(condition1)sig<=express1;

always@(posedgeclk)if(condition2)sig<=express2;

除非特殊情況,不建議在同一模塊中上、下時(shí)鐘沿混用。等效減少時(shí)鐘周期,不利于時(shí)序分析。多驅(qū)動(dòng)同步邏輯設(shè)計(jì)規(guī)則多驅(qū)動(dòng)在測(cè)試平臺(tái)中常出現(xiàn),但在設(shè)計(jì)中應(yīng)禁止使同步邏輯設(shè)計(jì)規(guī)則不用if-else作為完整選擇,容易出錯(cuò)。例:

always@(posedgeclk)if(rst)sig<=4’b0;if(condition1)//elseifsig<=express1;Case語(yǔ)句不要遺漏default,if語(yǔ)句條件要完備。Always語(yǔ)句應(yīng)使用完整的敏感量表,否則容易使仿真與綜合不一致,或產(chǎn)生非預(yù)期的鎖存器。同步邏輯設(shè)計(jì)規(guī)則不用if-else作為完整選擇,容易出錯(cuò)。例同步邏輯設(shè)計(jì)規(guī)則不要混合使用同步和異步復(fù)位,綜合可能出問(wèn)題。

always@(posedgeclkorposedgerst)if(rst|syn_rst)sig<=4’b0;elseif(condition1)sig<=express1;改為:always@(posedgeclkorposedgerst)if(rst)sig<=4’b0;if(syn_rst)sig<=4’b0;elseif(condition1)sig<=express1;同步邏輯設(shè)計(jì)規(guī)則不要混合使用同步和異步復(fù)位,綜合可能出問(wèn)題。同步邏輯設(shè)計(jì)規(guī)則狀態(tài)機(jī)設(shè)計(jì)一定要有初始復(fù)位狀態(tài)。較大狀態(tài)機(jī)建議用one-hot編碼方式。未用狀態(tài)一定要明確處理。建議使用單獨(dú)的狀態(tài)轉(zhuǎn)移always過(guò)程塊,輸入組合邏輯和輸出組合邏輯always過(guò)程塊的設(shè)計(jì)方式。同步邏輯設(shè)計(jì)規(guī)則狀態(tài)機(jī)設(shè)計(jì)一定要有初始復(fù)位狀態(tài)。同步邏輯設(shè)計(jì)規(guī)則資源共享。例:

always@(aorborcordorsel)sum=sel?(a+b):(c+d);------------------------------------------------always@(aorborcordorsel)begins1=sel?a:c;s2=sel?b:d;sum=s1+s2;end冗余邏輯。例:regsig1/*synthesispreserve*/;regsig2/*synthesispreserve*/;

always@(posedgeclkorposedgerst)if(rst)beginsig1<=1’b0;sig2<=1’b0;endelseif(condition1)beginsig1<=express1;sig2<=express1;end同步邏輯設(shè)計(jì)規(guī)則資源共享。例:冗余邏輯。例:自頂向下設(shè)計(jì)-系統(tǒng)級(jí)仿真與實(shí)現(xiàn)系統(tǒng)

溫馨提示

  • 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)論