九九热最新网址,777奇米四色米奇影院在线播放,国产精品18久久久久久久久久,中文有码视频,亚洲一区在线免费观看,国产91精品在线,婷婷丁香六月天

歡迎來到裝配圖網(wǎng)! | 幫助中心 裝配圖網(wǎng)zhuangpeitu.com!
裝配圖網(wǎng)
ImageVerifierCode 換一換
首頁 裝配圖網(wǎng) > 資源分類 > DOC文檔下載  

FPGACPLD數(shù)字電路設(shè)計經(jīng)驗

  • 資源ID:17817797       資源大?。?span id="24d9guoke414" class="font-tahoma">1.06MB        全文頁數(shù):27頁
  • 資源格式: DOC        下載積分:9.9積分
快捷下載 游客一鍵下載
會員登錄下載
微信登錄下載
三方登錄下載: 微信開放平臺登錄 支付寶登錄   QQ登錄   微博登錄  
二維碼
微信掃一掃登錄
下載資源需要9.9積分
郵箱/手機:
溫馨提示:
用戶名和密碼都是您填寫的郵箱或者手機號,方便查詢和重復(fù)下載(系統(tǒng)自動生成)
支付方式: 支付寶    微信支付   
驗證碼:   換一換

 
賬號:
密碼:
驗證碼:   換一換
  忘記密碼?
    
友情提示
2、PDF文件下載后,可能會被瀏覽器默認(rèn)打開,此種情況可以點擊瀏覽器菜單,保存網(wǎng)頁到桌面,就可以正常下載了。
3、本站不支持迅雷下載,請使用電腦自帶的IE瀏覽器,或者360瀏覽器、谷歌瀏覽器下載即可。
4、本站資源下載后的文檔和圖紙-無水印,預(yù)覽文檔經(jīng)過壓縮,下載后原文更清晰。
5、試題試卷類文檔,如果標(biāo)題沒有明確說明有答案則都視為沒有答案,請知曉。

FPGACPLD數(shù)字電路設(shè)計經(jīng)驗

FPGA/CPLD數(shù)字電路設(shè)計經(jīng)驗分享摘要:在數(shù)字電路的設(shè)計中,時序設(shè)計是一個系統(tǒng)性能的主要標(biāo)志,在高層次設(shè)計方法中,對時序控制的抽象度也相應(yīng)提高,因此在設(shè)計中較難把握,但在理解RTL電路時序模型的基礎(chǔ)上,采用合理的設(shè)計方法在設(shè)計復(fù)雜數(shù)字系統(tǒng)是行之有效的,通過許多設(shè)計實例證明采用這種方式可以使電路的后仿真通過率大大提高,并且系統(tǒng)的工作頻率可以達到一個較高水平。關(guān)鍵詞:FPGA 數(shù)字電路 時序 時延路徑 建立時間 保持時間1 數(shù)字電路設(shè)計中的幾個基本概念:1.1 建立時間和保持時間:建立時間(setup time)是指在觸發(fā)器的時鐘信號上升沿到來以前,數(shù)據(jù)穩(wěn)定不變的時間,如果建立時間不夠,數(shù)據(jù)將不能在這個時鐘上升沿被打入觸發(fā)器;保持時間(hold time)是指在觸發(fā)器的時鐘信號上升沿到來以后,數(shù)據(jù)穩(wěn)定不變的時間, 如果保持時間不夠,數(shù)據(jù)同樣不能被打入觸發(fā)器。 如圖1 。 數(shù)據(jù)穩(wěn)定傳輸必須滿足建立和保持時間的要求,當(dāng)然在一些情況下,建立時間和保持時間的值可以為零。 PLD/FPGA開發(fā)軟件可以自動計算兩個相關(guān)輸入的建立和保持時間(如圖2)圖1 建立時間和保持時間關(guān)系圖注:l 在考慮建立保持時間時,應(yīng)該考慮時鐘樹向后偏斜的情況,在考慮建立時間時應(yīng)該考慮時鐘樹向前偏斜的情況。在進行后仿真時,最大延遲用來檢查建立時間,最小延時用來檢查保持時間。l 建立時間的約束和時鐘周期有關(guān),當(dāng)系統(tǒng)在高頻時鐘下無法工作時,降低時鐘頻率就可以使系統(tǒng)完成工作。保持時間是一個和時鐘周期無關(guān)的參數(shù),如果設(shè)計不合理,使得布局布線工具無法布出高質(zhì)量的時鐘樹,那么無論如何調(diào)整時鐘頻率也無法達到要求,只有對所設(shè)計系統(tǒng)作較大改動才有可能正常工作,導(dǎo)致設(shè)計效率大大降低。因此合理的設(shè)計系統(tǒng)的時序是提高設(shè)計質(zhì)量的關(guān)鍵。在可編程器件中,時鐘樹的偏斜幾乎可以不考慮,因此保持時間通常都是滿足的。1.2 FPGA中的競爭和冒險現(xiàn)象信號在FPGA器件內(nèi)部通過連線和邏輯單元時,都有一定的延時。延時的大小與連線的長短和邏輯單元的數(shù)目有關(guān),同時還受器件的制造工藝、工作電壓、溫度等條件的影響。信號的高低電平轉(zhuǎn)換也需要一定的過渡時間。由于存在這兩方面因素,多路信號的電平值發(fā)生變化時,在信號變化的瞬間,組合邏輯的輸出有先后順序,并不是同時變化,往往會出現(xiàn)一些不正確的尖峰信號,這些尖峰信號稱為"毛刺"。如果一個組合邏輯電路中有"毛刺"出現(xiàn),就說明該電路存在"冒險"。(與分立元件不同,由于PLD內(nèi)部不存在寄生電容電感,這些毛刺將被完整的保留并向下一級傳遞,因此毛刺現(xiàn)象在PLD、FPGA設(shè)計中尤為突出)圖2是一個邏輯冒險的例子,從圖3的仿真波形可以看出,"A、B、C、D"四個輸入信號經(jīng)過布線延時以后,高低電平變換不是同時發(fā)生的,這導(dǎo)致輸出信號"OUT"出現(xiàn)了毛刺。(我們無法保證所有連線的長度一致,所以即使四個輸入信號在輸入端同時變化,但經(jīng)過PLD內(nèi)部的走線,到達或門的時間也是不一樣的,毛刺必然產(chǎn)生)。可以概括的講,只要輸入信號同時變化,(經(jīng)過內(nèi)部走線)組合邏輯必將產(chǎn)生毛刺。 將它們的輸出直接連接到時鐘輸入端、清零或置位端口的設(shè)計方法是錯誤的,這可能會導(dǎo)致嚴(yán)重的后果。 所以我們必須檢查設(shè)計中所有時鐘、清零和置位等對毛刺敏感的輸入端口,確保輸入不會含有任何毛刺圖2 存在邏輯冒險的電路示例圖3 圖2所示電路的仿真波形冒險往往會影響到邏輯電路的穩(wěn)定性。時鐘端口、清零和置位端口對毛刺信號十分敏感,任何一點毛刺都可能會使系統(tǒng)出錯,因此判斷邏輯電路中是否存在冒險以及如何避免冒險是設(shè)計人員必須要考慮的問題。如何處理毛刺我們可以通過改變設(shè)計,破壞毛刺產(chǎn)生的條件,來減少毛刺的發(fā)生。例如,在數(shù)字電路設(shè)計中,常常采用格雷碼計數(shù)器取代普通的二進制計數(shù)器,這是因為格雷碼計數(shù)器的輸出每次只有一位跳變,消除了競爭冒險的發(fā)生條件,避免了毛刺的產(chǎn)生。毛刺并不是對所有的輸入都有危害,例如D觸發(fā)器的D輸入端,只要毛刺不出現(xiàn)在時鐘的上升沿并且滿足數(shù)據(jù)的建立和保持時間,就不會對系統(tǒng)造成危害,我們可以說D觸發(fā)器的D輸入端對毛刺不敏感。 根據(jù)這個特性,我們應(yīng)當(dāng)在系統(tǒng)中盡可能采用同步電路,這是因為同步電路信號的變化都發(fā)生在時鐘沿,只要毛刺不出現(xiàn)在時鐘的沿口并且不滿足數(shù)據(jù)的建立和保持時間,就不會對系統(tǒng)造成危害。 (由于毛刺很短,多為幾納秒,基本上都不可能滿足數(shù)據(jù)的建立和保持時間)去除毛刺的一種常見的方法是利用D觸發(fā)器的D輸入端對毛刺信號不敏感的特點,在輸出信號的保持時間內(nèi),用觸發(fā)器讀取組合邏輯的輸出信號,這種方法類似于將異步電路轉(zhuǎn)化為同步電路。 圖4給出了這種方法的示范電路,圖5是仿真波形。圖4 消除毛刺信號方法之二圖5 圖4所示電路的仿真波形如前所述,優(yōu)秀的設(shè)計方案,如采用格雷碼計數(shù)器,同步電路等,可以大大減少毛刺,但它并不能完全消除毛刺。 毛刺并不是對所有輸入都有危害,例如D觸發(fā)器的D輸入端,只要毛刺不出現(xiàn)在時鐘的上升沿并且滿足數(shù)據(jù)的建立和保持時間,就不會對系統(tǒng)造成危害。因此我們可以說D觸發(fā)器的D輸入端對毛刺不敏感。但對于D觸發(fā)器的時鐘端,置位端,清零端,則都是對毛刺敏感的輸入端,任何一點毛刺就會使系統(tǒng)出錯,但只要認(rèn)真處理,我們可以把危害降到最低直至消除。下面我們就對幾種具體的信號進行探討。1.3 清除和置位信號在FPGA的設(shè)計中,全局的清零和置位信號必須經(jīng)過全局的清零和置位管腳輸入,因為他們也屬于全局的資源,其扇出能力大,而且在FPGA內(nèi)部是直接連接到所有的觸發(fā)器的置位和清零端的,這樣的做法會使芯片的工作可靠、性能穩(wěn)定,而使用普通的IO腳則不能保證該性能。在FPGA的設(shè)計中,除了從外部管腳引入的全局清除和置位信號外在FPGA內(nèi)部邏輯的處理中也經(jīng)常需要產(chǎn)生一些內(nèi)部的清除或置位信號。清除和置位信號要求象對待時鐘那樣小心地考慮它們,因為這些信號對毛刺也是非常敏感的。在同步電路設(shè)計中,有時候可以用同步置位的辦法來替代異步清0。在用硬件描述語言的設(shè)計中可以用如下的方式來描述:異步清0的描述方法:process(rst,clk)begin if rst=1 then count<=(others=>0);elsif clkevent and clk=1 then count<=count+1;end if;end process;同步清0的描述方法:processbegin wait until clkevent and clk=1;if rst=1 then count<=(others=>0);else count<=count+1;end if;end process;圖6 異步清0、置位邏輯圖圖7 同步清0、置位關(guān)系圖1.4 觸發(fā)器和鎖存器:我們知道,觸發(fā)器是在時鐘的沿進行數(shù)據(jù)的鎖存的,而鎖存器是用電平使能來鎖存數(shù)據(jù)的。所以觸發(fā)器的Q輸出端在每一個時鐘沿都會被更新,而鎖存器只能在使能電平有效器件才會被更新。在FPGA設(shè)計中建議如果不是必須那么應(yīng)該盡量使用觸發(fā)器而不是鎖存器。 那么在使用硬件描述語言進行電路設(shè)計的時候如何區(qū)分觸發(fā)器和鎖存器的描述方法哪?其實有不少人在使用的過程中可能并沒有特意區(qū)分過,所以也忽略了二者在描述方法上的區(qū)別。下面是用VHDL語言描述的觸發(fā)器和鎖存器以及綜合器產(chǎn)生的電路邏輯圖。觸發(fā)器的語言描述:processbegin wait until clkevent and clk=1; q<=d;end process;圖 觸發(fā)器鎖存器的語言描述:process(en,d)begin if en=1 then q<=d;end if;end process;圖 所存器由上述對Latch的描述可見,其很容易于選擇器的描述相混淆,用VHDL語言對選擇器的描述方法如下:process(en,a,b)begin if en=1 then q<=a; else q<=b;end if;end process;2 FPGA/CPLD中的一些設(shè)計方法2.1 FPGA設(shè)計中的同步設(shè)計異步設(shè)計不是總能滿足(它們所饋送的觸發(fā)器的)建立和保持時間的要求。因此,異步輸入常常會把錯誤的數(shù)據(jù)鎖存到觸發(fā)器,或者使觸發(fā)器進入亞穩(wěn)定的狀態(tài),在該狀態(tài)下,觸發(fā)器的輸出不能識別為l或0。如果沒有正確地處理,亞穩(wěn)性會導(dǎo)致嚴(yán)重的系統(tǒng)可靠性問題。另外,在FPGA的內(nèi)部資源里最重要的一部分就是其時鐘資源(全局時鐘網(wǎng)絡(luò)),它一般是經(jīng)過FPGA的特定全局時鐘管腳進入FPGA內(nèi)部,后經(jīng)過全局時鐘BUF適配到全局時鐘網(wǎng)絡(luò)的,這樣的時鐘網(wǎng)絡(luò)可以保證相同的時鐘沿到達芯片內(nèi)部每一個觸發(fā)器的延遲時間差異是可以忽略不計的。在FPGA中上述的全局時鐘網(wǎng)絡(luò)被稱為時鐘樹,無論是專業(yè)的第三方工具還是器件廠商提供的布局布線器在延時參數(shù)提取、分析的時候都是依據(jù)全局時鐘網(wǎng)絡(luò)作為計算的基準(zhǔn)的。如果一個設(shè)計沒有使用時鐘樹提供的時鐘,那么這些設(shè)計工具有的會拒絕做延時分析有的延時數(shù)據(jù)將是不可靠的。在我們?nèi)粘5脑O(shè)計中很多情形下會用到需要分頻的情形,好多人的做法是先用高頻時鐘計數(shù),然后使用計數(shù)器的某一位輸出作為工作時鐘進行其他的邏輯設(shè)計。其實這樣的方法是不規(guī)范的。比如下面的描述方法:processbegin wait until clkevent and clk=1; if fck=1 thencount<=(others=>0); else count<=count+1; end if;end process;processbegin wait until count(2)event and count(2)=1 ; shift_reg<=data;end process;在上述的第一個process電路描述中,首先計數(shù)器的輸出結(jié)果(count(2))相對于全局時鐘clk已經(jīng)產(chǎn)生了一定的延時(延時的大小取決于計數(shù)器的位數(shù)和所選擇使用的器件工藝);而在第二個process中使用計數(shù)器的bit2作為時鐘,那么shift_reg相對于全局clk的延時將變得不好控制。布局布線器最終給出的時間分析也是不可靠的。這樣產(chǎn)生的結(jié)果波形仿真如下圖所示:正確的做法可以將第二個process這樣來寫。processbegin wait until clkevent and clk=1 ; if count(2 downto 0)=”000” then shift_reg<=data;end if;end process;或者分成兩步來寫:process(count)begin if count(2 downto 0)=”000” thenen<=1;else en<=0;end if;end process;processbegin wait until clkevent and clk=1 ; if en=1 then shift_reg<=data;end if;end process;這樣做是相當(dāng)于產(chǎn)生了一個8分頻的使能信號,在使能信號有效的時候?qū)ata數(shù)據(jù)采樣到shift_reg寄存器中。但此種情形下shift_reg的延時是相對于全局時鐘clk的。下面的圖形更能看得清楚。圖 上圖中波形的局部放大2.2 FPGA設(shè)計中的延時電路的產(chǎn)生:在日常的電路設(shè)計中,有時候我們需要對信號進行延時處理來適應(yīng)對外接口的時序關(guān)系,最經(jīng)常也是最典型的情況是做處理機的接口;因為與處理的接口時序關(guān)系是異步的,而一個規(guī)范的FPGA設(shè)計應(yīng)該是盡可能采用同步設(shè)計。那么遇到這種情況該如何處理呢?首先在FPGA中要產(chǎn)生延時,信號必須經(jīng)過一定的物理資源。在硬件描述語言中有關(guān)鍵詞Wait for xx ns,需要說明的是該語法是僅僅用于仿真而不能用于綜合的,可綜合的延時方法有:n 使信號經(jīng)過邏輯門得到延時(如非門);n 使用器件提供的延時單元(如Altera公司的LCELL,Xilinx公司的);注意:當(dāng)使用多級非門的時候綜合器往往會將其優(yōu)化掉,因為綜合器會認(rèn)為一個信號非兩次還是它自己。需要說明的是在FPGA/CPLD內(nèi)部結(jié)構(gòu)是一種標(biāo)準(zhǔn)的宏單元,下圖是Xilinx公司的Spartans II系列器件的一個標(biāo)準(zhǔn)宏單元。雖然不同的廠家的芯片宏單元的結(jié)構(gòu)不同,但概括而言都是由一些組合邏輯外加一或二個觸發(fā)器而構(gòu)成。在實際應(yīng)用中,當(dāng)一個模塊內(nèi)的組合邏輯被使用了那么與其對應(yīng)的觸發(fā)器也就不能用了;同樣如果觸發(fā)器單元被用了那么組合邏輯單元也就廢了。這就是有時候(特別是使用CPLD)雖然設(shè)計使用的資源并不多但布局布線器卻報告資源不夠使用的原因。現(xiàn)面的一個例子是前一段時間我在公司遇到的一個設(shè)計。設(shè)計使用Altera公司的EPM7256型號的CPLD。該設(shè)計實際使用的寄存器資源只有109個,占整個器件資源的42%??墒窃撛O(shè)計使用了如下圖所示的延時方法來做處理器接口的時序:在該電路的設(shè)計中使用了大量的LCELL來產(chǎn)生100多納秒的延時,這樣做的后果是雖然整個電路的觸發(fā)器資源只使用了42%,可是用MaxplusII進行布局布線已經(jīng)不能夠通過了。而且我懷疑經(jīng)過這么多邏輯的延時后所產(chǎn)生的信號還能保持原來的性能不。當(dāng)需要對某一信號作一段延時時,初學(xué)者往往在此信號后串接一些非門或其它門電路,此方法在分離電路中是可行的。但在中,開發(fā)軟件在綜合設(shè)計時會將這些門當(dāng)作冗余邏輯去掉,達不到延時的效果。用ALTERA公司的MaxplusII開發(fā)時,可以通過插入一些原語來產(chǎn)生一定的延時,但這樣形成的延時在芯片中并不穩(wěn)定,會隨溫度等外部環(huán)境的改變而改變,因此并不提倡這樣做。在此,可以用高頻時鐘來驅(qū)動一移位寄存器,待延時信號作數(shù)據(jù)輸入,按所需延時正確設(shè)置移位寄存器的級數(shù),移位寄存器的輸出即為延時后的信號。此方法產(chǎn)生的延時信號與原信號比有誤差,誤差大小由高頻時鐘的周期來決定。對于數(shù)據(jù)信號的延時,在輸出端用數(shù)據(jù)時鐘對延時后信號重新采樣,就可以消除誤差。對于這樣大的延時我建議的實現(xiàn)方法是采用時鐘鎖存來產(chǎn)生延時的方法,我們知道當(dāng)一個信號用時鐘鎖存一次,將會占用一個觸發(fā)器資源,信號會向后推移一個時鐘周期;該同事的設(shè)計里CPLD芯片正好連接有32MHz的時鐘,那么每用時鐘鎖存一次ssp信號就會推移31ns,這樣只需多使用3個觸發(fā)器資源就可以達到目的了。電路圖和仿真波形如下圖所示:當(dāng)然這樣做對原來信號高低電平的寬度會稍有改變,但只要是在與其接口的芯片的容許范圍之內(nèi)就不會影響到功能的實現(xiàn)。圖 用于延時的電路圖上圖仿真波形2.3 如何提高系統(tǒng)的運行速度同步電路的速度是指同步時鐘的速度。同步時鐘愈快,電路處理數(shù)據(jù)的時間間隔越短,電路在單位時間處理的數(shù)據(jù)量就愈大.我們先來看一看同步電路中數(shù)據(jù)傳遞的一個基本模型,如下圖:(Tco是觸發(fā)器時鐘到數(shù)據(jù)輸出的延時;Tdelay是組合邏輯的延時;Tsetup是觸發(fā)器的建立時間)假設(shè)數(shù)據(jù)已經(jīng)被時鐘的上升沿打入D觸發(fā)器,那么數(shù)據(jù)到達第一個觸發(fā)器的Q端需要Tco,再經(jīng)過組合邏輯的延時Tdelay到達的第二個觸發(fā)器的D端,要想時鐘能在第二個觸發(fā)器再次被穩(wěn)定的鎖入觸發(fā)器,則時鐘的延遲不能晚于Tco+Tdelay+Tsetup,(我們可以回顧一下前面講過的建立和保持時間的概念,就可以理解為什么公式最后要加上一個Tdelay) 由以上分析可知:最小時鐘周期:T=Tco+Tdelay+Tsetup 最快時鐘頻率 F= 1/T PLD開發(fā)軟件也正是通過這個公式來計算系統(tǒng)運行速度Fmax注:在這個邏輯圖中有個參數(shù):Tpd ,即時鐘的延時參數(shù),我們在剛才做時間分析的時候,沒有提這個參數(shù),(如果使用PLD的全局時鐘型號,Tpd可以為0,如果是普通時鐘,則不為0)。所以如果考慮到時鐘的延時,精確的公式應(yīng)該是T=Tco+Tdelay+Tsetup-Tpd。當(dāng)然以上全部分析的都是器件內(nèi)部的運行速度,如果考慮芯片I/O管腳延時對系統(tǒng)速度的影響,那么還需要加一些修正。由于Tco、Tsetup是由具體的器件和工藝決定的,我們設(shè)計電路時只可以改變Tdelay。所以縮短觸發(fā)器間組合邏輯的延時是提高同步電路速度的關(guān)鍵。由于一般同步電路都不止一級鎖存(如圖3),而要使電路穩(wěn)定工作,時鐘周期必須滿足最大延時要求,縮短最長延時路徑,才可提高電路的工作頻率。如圖2所示:我們可以將較大的組合邏輯分解為較小的幾塊,中間插入觸發(fā)器,這樣可以提高電路的工作頻率。這也是所謂“流水線”(pipelining)技術(shù)的基本原理。對于圖3的上半部分,它時鐘頻率受制于第二個較大的組合邏輯的延時,通過適當(dāng)?shù)姆椒ㄆ骄峙浣M合邏輯,可以避免在兩個觸發(fā)器之間出現(xiàn)過大的延時,消除速度瓶頸。FPGA/CPLD開發(fā)軟件中也有一些參數(shù)設(shè)置,通過修改這些設(shè)置,可以提高編譯/布局布線后系統(tǒng)速度,但是根據(jù)經(jīng)驗這種速度的提高是很有限的,假如按照要求我們需要設(shè)計一個可以工作到50MHz的系統(tǒng),實際布局布線器報告出來的Fmax只有40MHz,此時如果我們使用布局布線器的設(shè)置選項最多可以提高到45MHz,這還是運氣比較好的情況。而且你必須了解這些選項的含義、使用背景等。其實在一個設(shè)計里影響速度的瓶頸經(jīng)常只會有幾條,我們將延時最大的路徑稱作關(guān)鍵路徑。當(dāng)設(shè)計的運行速度不符合系統(tǒng)設(shè)計要求的時候我們可以首先找到不能滿足要求的關(guān)鍵路徑,按照上述的方法將關(guān)鍵路徑上的組合邏輯拆分成多個中間用觸發(fā)器隔開,這樣很容易就可以從根本上提升系統(tǒng)的運行速度了。有的設(shè)計在設(shè)計開始就知道那部分電路會產(chǎn)生比較大的組合邏輯,導(dǎo)致速度瓶頸的產(chǎn)生,那么就應(yīng)該在開始就想好解決辦法。比如現(xiàn)在設(shè)計需要產(chǎn)生一個32位的加法器,并且要求能夠工作在50MHz。根據(jù)經(jīng)驗直接用32位加法器肯定是達不到50MHz的要求的,這時我們可以將其分成3個12位計數(shù)器來操作,后面的計數(shù)器只要將前面計數(shù)器結(jié)果的高位(進位位)相加就可以了。下面是原來在寬帶接入服務(wù)器設(shè)計中的流量統(tǒng)計單元中的32位加法器的描述:- flow count element -temporary computing 12 bits adderprocess(Count_0_en,count_buffer,Len,Carry_0_0,Carry_0_1)begin case Count_0_en is -1st Step addition (10 downto 0) + (10 downto 0) when "001" => add_12_a_0 <= (0 & count_buffer(0)(10 downto 0); add_12_b_0 <= (0 & Len(10 downto 0); -2nd Step addition (21 downto 11) + Carry_0_0 when "010" => add_12_a_0 <= (0 & count_buffer(0)(21 downto 11); add_12_b_0 <= ("00000000000" & Carry_0_0); -3rd Step addition (31 downto 22) + Carry_0_1 when "100" => add_12_a_0 <= ("00" & count_buffer(0)(31 downto 22); add_12_b_0 <= ("00000000000" & Carry_0_1); when others => add_12_a_0 <=(others=>X); add_12_b_0 <=(others=>X); end case;end process;-12 bits adderadd_12_result_0 <= add_12_a_0 + add_12_b_0;-Bytes Countprocess(RST,CLK_25MHz,IO,OE_bar,data_sel,Count_0_en)begin if(RST = 1)then -system Reset count_buffer(0) <= (others => 0); Carry_0_0 <= 0; Carry_0_1 <= 0; Carry_0_2 <= 0; elsif(CLK_25MHzevent and CLK_25MHz = 0)then if(OE_bar = 0 and data_sel = 0)then count_buffer(0) <= IO; Carry_0_2 <= 0; else case Count_0_en is -1st Step addition (10 downto 0) + (10 downto 0) when "001" => count_buffer(0)(10 downto 0) <= add_12_result_0(10 downto 0); Carry_0_0 <= add_12_result_0(11);-first step carry -2nd Step addition (21 downto 11) + Carry_0_0 when "010" => count_buffer(0)(21 downto 11) <= add_12_result_0(10 downto 0); Carry_0_1 <= add_12_result_0(11);-Second step carry -3rd Step addition (31 downto 22) + Carry_0_1 when "100" => count_buffer(0)(31 downto 22) <= add_12_result_0(9 downto 0); Carry_0_2 <= add_12_result_0(10);-Third step carry when others => Carry_0_2 <= 0; end case; end if; end if;end process;2.4 信號輸出 當(dāng)你需要將FPGA/CPLD內(nèi)部的信號通過管腳輸出給外部相關(guān)器件的時候,如果不影響功能最好是將這些信號通過用時鐘鎖存后輸出。因為通常情況下一個板子是工作于一種或兩種時鐘模式下,與FPGA/CPLD相連接的芯片的工作時鐘大多數(shù)情形下與FPGA的時鐘同源,如果輸出的信號經(jīng)過時鐘鎖存可以起到如下的作用:n 容易滿足芯片間信號連接的時序要求;n 容易滿足信號的建立保持時間;如上圖所示,比如FPGA/CPLD在CLK的時鐘沿1鎖存一個信號得到SIG所示的波形,SIG信號需要給另外的一個與其接口的芯片,那么該芯片將一定會在CLK的時鐘沿2正確采樣到SIG信號。但是如果該信號在FPGA/CPLD中輸出的時候不是用時鐘沿鎖存的,那將有可能出現(xiàn)SIG1/SIG2所示的時序關(guān)系,則與其接口的芯片在時鐘沿2處采樣該信號的時候有可能出現(xiàn)建立保持時間不滿足要求而出現(xiàn)采樣不可靠、沿打沿等情況。另外通過組合邏輯輸出還有可能出現(xiàn)毛刺的情況。所有這些不規(guī)范的設(shè)計都會引起系統(tǒng)工作時的不可靠、不穩(wěn)定的情形。2.5 寄存異步輸入信號我們在日常的設(shè)計工作中,F(xiàn)PGA/CPLD總是要與別的芯片相連接的,F(xiàn)PGA/CPLD會給別的芯片輸出信號,同時也要處理別的芯片送來的信號,這些信號往往對FPGA/CPLD內(nèi)部的時鐘系統(tǒng)而言是異步的,為了可靠的采樣到這些輸入信號,建議將這些輸入信號使用相應(yīng)的時鐘鎖存后在處理,這樣做:n 將原來的異步信號轉(zhuǎn)化成同步來處理;n 去除輸入信號中的毛刺(特別是對于數(shù)據(jù)總線);圖 FPGA/CPLD中信號的輸入、輸出鎖存2.6 FPGA/CPLD中的時鐘設(shè)計無淪是用離散邏輯、可編程邏輯,還是用全定制硅器件實現(xiàn)的任何數(shù)字設(shè)計,為了成功地操作,可靠的時鐘是非常關(guān)鍵的。設(shè)計不良的時鐘在極限的溫度、電壓或制造工藝的偏差情況下將導(dǎo)致錯誤的行為,并且調(diào)試?yán)щy、花銷很大。在設(shè)計FPGA/CPLD時通常采用幾種時鐘類型。時鐘可分為如下四種類型:全局時鐘、門控時鐘、多級邏輯時鐘和波動式時鐘。多時鐘系統(tǒng)能夠包括上述四種時鐘類型的任意組合。無論采用何種方式,電路中真實的時鐘樹也無法達到假定的理想時鐘,因此我們必須依據(jù)理想時鐘,建立一個實際工作時鐘模型來分析電路,這樣才可以使得電路的實際工作效果和預(yù)期的一樣。在實際的時鐘模型中,我們要考慮時鐘樹傳播中的偏斜、跳變和絕對垂直的偏差以及其它一些不確定因素。對于寄存器而言,當(dāng)時鐘工作沿到來時它的數(shù)據(jù)端應(yīng)該已經(jīng)穩(wěn)定,這樣才能保證時鐘工作沿采樣到數(shù)據(jù)的正確性,這段數(shù)據(jù)的預(yù)備時間我們稱之為建立時間(setup time)。數(shù)據(jù)同樣應(yīng)該在時鐘工作沿過去后保持一段時間,這段時間稱為保持時間(hold time)。因此具體的時鐘如圖5所示。其中網(wǎng)絡(luò)延遲是指時鐘的傳播延時以及因為跳變不垂直等效的偏差,在此基礎(chǔ)上考慮一些不確定因素實際的工作時鐘沿如圖中所示。保持時間(hold)和建立時間(setup)都是相對于實際時鐘跳變而言的。因此在確定電路時序時,必須要考慮到這些因素,使得建立時間和保持時間符合要求。為了使電路正常工作,建立時間和保持時間應(yīng)該分別滿足:其中tclock_Q_max是時鐘沿變化到數(shù)據(jù)輸出端變化的最慢變化情況,tlogic_max是寄存器間組合邏輯的最大可能延遲,tclock_Q_min和tlogic_min表示最快情況。在考慮建立保持時間時,應(yīng)該考慮時鐘樹向后偏斜的情況,在考慮建立時間時應(yīng)該考慮時鐘樹向前偏斜的情況。在進行后仿真時,最大延遲用來檢查建立時間,最小延時用來檢查保持時間。2.6.1 全局時鐘對于一個設(shè)計項目來說,全局時鐘(或同步時鐘)是最簡單和最可預(yù)測的時鐘。在PLD/FPGA設(shè)計中最好的時鐘方案是:由專用的全局時鐘輸入引腳驅(qū)動的單個主時鐘去鐘控設(shè)計項目中的每一個觸發(fā)器。只要可能就應(yīng)盡量在設(shè)計項目中采用全局時鐘。PLD/FPGA都具有專門的全局時鐘引腳,它直接連到器件中的每一個寄存器。這種全局時鐘提供器件中最短的時鐘到輸出的延時。圖1 示出全局時鐘的實例。圖1 定時波形示出觸發(fā)器的數(shù)據(jù)輸入D1.3應(yīng)遵守建立時間和保持時間的約束條件。建立和保持時間的數(shù)值在PLD數(shù)據(jù)手冊中給出,也可用軟件的定時分析器計算出來。如果在應(yīng)用中不能滿足建立和保持時間的要求,則必須用時鐘同步輸入信號(參看下一章“異步輸入”)。圖1 全局時鐘(最好的方法是用全局時鐘引腳去鐘控PLD內(nèi)的每一個寄存器,于是數(shù)據(jù)只要遵守相對時鐘的建立時間tsu和保持時間th)2.6.2 門控時鐘在許多應(yīng)用中,整個設(shè)計項目都采用外部的全局時鐘是不可能或不實際的。PLD具有乘積項邏輯陣列時鐘(即時鐘是由邏輯產(chǎn)生的),允許任意函數(shù)單獨地鐘控各個觸發(fā)器。然而,當(dāng)你用陣列時鐘時,應(yīng)仔細(xì)地分析時鐘函數(shù),以避免毛刺。 通常用陣列時鐘構(gòu)成門控時鐘。門控時鐘常常同微處理器接口有關(guān),用地址線去控制寫脈沖。然而,每當(dāng)用組合函數(shù)鐘控觸發(fā)器時,通常都存在著門控時鐘。如果符合下述條件,門控時鐘可以象全局時鐘一樣可靠地工作:l 驅(qū)動時鐘的邏輯必須只包含一個“與”門或一個“或”門。如果采用任何附加邏在某些工作狀態(tài)下,會出現(xiàn)競爭產(chǎn)生的毛刺。l 邏輯門的一個輸入作為實際的時鐘,而該邏輯門的所有其它輸入必須當(dāng)成地址或控制線,它們遵守相對于時鐘的建立和保持時間的約束。圖2和圖3 是可靠的門控時鐘的實例。在 圖2 中,用一個“與”門產(chǎn)生門控時鐘,在 圖3 中,用一個“或”門產(chǎn)生門控時鐘。在這兩個實例中,引腳nWR和nWE考慮為時鐘引腳,引腳ADDo3是地址引腳,兩個觸發(fā)器的數(shù)據(jù)是信號D1.n經(jīng)隨機邏輯產(chǎn)生的。圖2 “與”門門控時鐘圖3 “或”門門控時鐘圖2和圖3 的波形圖顯示出有關(guān)的建立時間和保持時間的要求。這兩個設(shè)計項目的地址線必須在時鐘保持有效的整個期間內(nèi)保持穩(wěn)定(nWR和nWE是低電平有效)。如果地址線在規(guī)定的時間內(nèi)未保持穩(wěn)定,則在時鐘上會出現(xiàn)毛刺,造成觸發(fā)器發(fā)生錯誤的狀態(tài)變化。另一方面,數(shù)據(jù)引腳D1n只要求在nWR和nWE的有效邊沿處滿足標(biāo)準(zhǔn)的建立和保持時間的規(guī)定。我們往往可以將門控時鐘轉(zhuǎn)換成全局時鐘以改善設(shè)計項目的可靠性。圖4 示出如何用全局時鐘重新設(shè)計 圖2 的電路。地址線在控制D觸發(fā)器的使能輸入,許多PLD設(shè)計軟件,如MAX+PLUSII軟件都提供這種帶使能端的D觸發(fā)器。當(dāng)ENA為高電平時,D輸入端的值被鐘控到觸發(fā)器中:當(dāng)ENA為低電平時,維持現(xiàn)在的狀態(tài)。圖4 “與”門門控時鐘轉(zhuǎn)化成全局時鐘圖4 中重新設(shè)計的電路的定時波形表明地址線不需要在nWR有效的整個期間內(nèi)保持穩(wěn)定;而只要求它們和數(shù)據(jù)引腳一樣符合同樣的建立和保持時間,這樣對地址線的要求就少很多。圖5給出一個不可靠的門控時鐘的例子。3位同步加法計數(shù)器的RCO輸出用來鐘控觸發(fā)器。然而,計數(shù)器給出的多個輸入起到時鐘的作用,這違反了可靠門控時鐘所需的條件之一。在產(chǎn)生RCO信號的觸發(fā)器中,沒有一個能考慮為實際的時鐘線,這是因為所有觸發(fā)器在幾乎相同的時刻發(fā)生翻轉(zhuǎn)。而我們并不能保證在PLD/FPGA內(nèi)部QA,QB,QC到D觸發(fā)器的布線長短一致,因此,如 圖5 的時間波形所示,在器從3計到4時,RCO線上會出現(xiàn)毛刺(假設(shè)QC到D觸發(fā)器的路徑較短,即QC的輸出先翻轉(zhuǎn))。圖5 不可靠的門控時鐘(定時波形示出在計數(shù)器從3到4改變時,RCO信號如何出現(xiàn)毛刺的)圖6 給出一種可靠的全局鐘控的電路,它是圖5不可靠計數(shù)器電路的改進,RCO控制D觸發(fā)器的使能輸入。這個改進不需要增加PLD的邏輯單元。圖6 不可靠的門控時鐘轉(zhuǎn)換為全局時鐘2.6.3 多級邏輯時鐘當(dāng)產(chǎn)生門控時鐘的組合邏輯超過一級(即超過單個的“與”門或“或”門)時,證設(shè)計項目的可靠性變得很困難。即使樣機或仿真結(jié)果沒有顯示出靜態(tài)險象,但實際上仍然可能存在著危險。通常,我們不應(yīng)該用多級組合邏輯去鐘控PLD設(shè)計中的觸發(fā)器。圖7 給出一個含有險象的多級時鐘的例子。時鐘是由SEL引腳控制的多路選擇器輸出的。多路選擇器的輸入是時鐘(CLK)和該時鐘的2分頻(DIV2)。由圖7 的定時波形圖看出,在兩個時鐘均為邏輯1的情況下,當(dāng)SEL線的狀態(tài)改變時,存在靜態(tài)險象。險象的程度取決于工作的條件。 多級邏輯的險象是可以去除的。例如,你可以插入“冗余邏輯”到設(shè)計項目中。然而,PLD/FPGA編譯器在邏輯綜合時會去掉這些冗余邏輯,使得驗證險象是否真正被去除變得困難了。為此,必須應(yīng)尋求其它方法來實現(xiàn)電路的功能。圖7 有靜態(tài)險象的多級時鐘圖8 給出 圖7 電路的一種單級時鐘的替代方案。圖中SEL引腳和DIV2信號用于使能D觸發(fā)器的使能輸入端,而不是用于該觸發(fā)器的時鐘引腳。采用這個電路并不需要附加PLD的邏輯單元,工作卻可靠多了。 不同的系統(tǒng)需要采用不同的方法去除多級時鐘,并沒有固定的模式。圖7 無靜態(tài)險象的多級時鐘(這個電路邏輯上等效于圖7,但卻可靠的多)2.6.4 行波時鐘另一種流行的時鐘電路是采用行波時鐘,即一個觸發(fā)器的輸出用作另一個觸發(fā)器的時鐘輸入。如果仔細(xì)地設(shè)計,行波時鐘可以象全局時鐘一樣地可靠工作。然而,行波時鐘使得與電路有關(guān)的定時計算變得很復(fù)雜。行波時鐘在行波鏈上各觸發(fā)器的時鐘之間產(chǎn)生較大的時間偏移,并且會超出最壞情況下的建立時間、保持時間和電路中時鐘到輸出的延時,使系統(tǒng)的實際速度下降。 用計數(shù)翻轉(zhuǎn)型觸發(fā)器構(gòu)成異步計數(shù)器時常采用行波時鐘,一個觸發(fā)器的輸出鐘控下一個觸發(fā)器的輸入,參看圖9 同步計數(shù)器通常是代替異步計數(shù)器的更好方案,這是因為兩者需要同樣多的宏單元而同步計數(shù)器有較快的時鐘到輸出的時間。圖10 給出具有全局時鐘的同步計數(shù)器,它和 圖9 功能相同,用了同樣多的邏輯單元實現(xiàn),卻有較快的時鐘到輸出的時間。幾乎所有PLD開發(fā)軟件都提供多種多樣的同步計數(shù)器。圖9 行波時鐘圖10 行波時鐘轉(zhuǎn)換成全局時鐘(這個3位計數(shù)器是圖9異步計數(shù)器的替代電路,它用了同樣的3個宏單元,但有更短的時鐘到輸出的延時)2.6.5 多時鐘系統(tǒng)許多系統(tǒng)要求在同一個PLD內(nèi)采用多時鐘。最常見的例子是兩個異步微處理器器之間的接口,或微處理器和異步通信通道的接口。由于兩個時鐘信號之間要求一定的建立和保持時間,所以,上述應(yīng)用引進了附加的定時約束條件。它們也會要求將某些異步信號同步化。圖11 給出一個多時鐘系統(tǒng)的實例。CLK_A用以鐘控REG_A,CLK_B用于鐘控REG_B,由于REG_A驅(qū)動著進入REG_B的組合邏輯,故CLK_A的上升沿相對于CLK_B的上升沿有建立時間和保持時間的要求。由于REG_B不驅(qū)動饋到REG_A的邏輯,CLK_B的上升沿相對于CLK_A沒有建立時間的要求。此外,由于時鐘的下降沿不影響觸發(fā)器的狀態(tài),所以CLK_A和CLK_B的下降沿之間沒有時間上的要求。如圖4,2II所示,電路中有兩個獨立的時鐘,可是,在它們之間的建立時間和保持時間的要求是不能保證的。在這種情況下,必須將電路同步化。圖12 給出REG_A的值(如何在使用前)同CLK_B同步化。新的觸發(fā)器REG_C由GLK_B觸控,保證REG_G的輸出符合REG_B的建立時間。然而,這個方法使輸出延時了一個時鐘周期。圖ll 多時鐘系統(tǒng)(定時波形示出CLK_A的上升沿相對于CLK_B的上升沿有建立時間和保持時間的約束條件)圖12 具有同步寄存器輸出的多時鐘系統(tǒng)(如果CLK_A和CLK_B是相互獨立的,則REGA的輸出必須在它饋送到1REG_B之前,用REG_C同步化)在許多應(yīng)用中只將異步信號同步化還是不夠的,當(dāng)系統(tǒng)中有兩個或兩個以上非同源時鐘的時候,數(shù)據(jù)的建立和保持時間很難得到保證,我們將面臨復(fù)雜的時間問題。最好的方法是將所有非同源時鐘同步化。使用PLD內(nèi)部的鎖項環(huán)(PLL或DLL)是一個效果很好的方法,但不是所有PLD都帶有PLL、DLL,而且?guī)в蠵LL功能的芯片大多價格昂貴,所以除非有特殊要求,一般場合可以不使用帶PLL的PLD。 這時我們需要使用帶使能端的D觸發(fā)器,并引入一個高頻時鐘。圖13 不同源時鐘如圖13所示,系統(tǒng)有兩個不同源時鐘,一個為3MHz,一個為5MHz,不同的觸發(fā)器使用不同的時鐘。為了系統(tǒng)穩(wěn)定,我們引入一個20MHz時鐘,將3M和5M時鐘同步化,如圖15所示。 20M的高頻時鐘將作為系統(tǒng)時鐘,輸入到所有觸發(fā)器的的時鐘端。3M_EN 和5M_EN將控制所有觸發(fā)器的使能端。即原來接3M時鐘的觸發(fā)器,接20M時鐘,同時3M_EN 將控制該觸發(fā)器使能 ,原接5M時鐘的觸發(fā)器,也接20M時鐘,同時5M_EN 將控制該觸發(fā)器使能。 這樣我們就可以將任何非同源時鐘同步化。圖13 同步化任意非同源時鐘(一個DFF和后面非門,與門構(gòu)成時鐘上升沿檢測電路) 另外,異步信號輸入總是無法滿足數(shù)據(jù)的建立保持時間,容易使系統(tǒng)進入亞穩(wěn)態(tài),所以也建議設(shè)計者把所有異步輸入都先經(jīng)過雙觸發(fā)器進行同步化. 小結(jié):穩(wěn)定可靠的時鐘是系統(tǒng)穩(wěn)定可靠的重要條件,我們不能夠?qū)⑷魏慰赡芎忻痰妮敵鲎鳛闀r鐘信號,并且盡可能只使用一個全局時鐘,對多時鐘系統(tǒng)要注意同步異步信號和非同源時鐘。2.6.6 多時鐘系統(tǒng)設(shè)計的一些方法:如果時鐘間存在著固定的頻率倍數(shù),這種情況下它們的相位一般具有固定關(guān)系,可以采用下述方法處理;l 使用高頻時鐘作為工作時鐘,使用低頻時鐘作為使能信號,當(dāng)功耗不作為首要因素時建議使用這種方式;l 在仔細(xì)分析時序的基礎(chǔ)上描述兩個時鐘轉(zhuǎn)換處的電路;如果電路中存在兩個不同頻率的時鐘,并且頻率無關(guān),可以采用如下策略:l 利用高頻時鐘采樣兩個時鐘,在電路中使用高頻時鐘作為電路的工作時鐘,經(jīng)采樣后的低頻時鐘作為使能;l 在時鐘同步單元中采用兩次同步法ll 使用握手信號l 使用雙時鐘FIFO進行數(shù)據(jù)緩沖時鐘同步化,如果系統(tǒng)中存在兩個時鐘clk_a和clk_b,設(shè)計者可以使用頻率高于max(clk_a,clk_b)兩倍的時鐘來作為采樣時鐘,兩個低頻時鐘經(jīng)過處理后可以作為觸發(fā)器的使能信號,采用這種方案的好處是整個電路采用單時鐘工作,但需要一個額外的高頻時鐘,當(dāng)電路有功耗要求時,設(shè)計者應(yīng)該仔細(xì)考慮;使用20M采樣3M和5M,syn_5M作為原來5M信號驅(qū)動寄存器的使能信號; 圖 使用高頻時鐘采樣2個低頻時鐘原理圖圖 使用高頻時鐘采樣2個低頻時鐘波形圖在構(gòu)件由兩個不同系統(tǒng)時鐘控制工作的模塊之間的同步模塊時,應(yīng)該遵守下面原則:兩個采用不同時鐘工作的寄存器之間不應(yīng)該再出現(xiàn)邏輯電路,而應(yīng)該僅僅是一種連接關(guān)系,具體如下圖所示,這種方法有利于控制建立保持時間的滿足。握手信號機制是異步系統(tǒng)之間通信的基本方式,我們在處理不同時鐘之間的接口時,也可以采用這種方式,但需要注意的是設(shè)計者應(yīng)該仔細(xì)分析握手和應(yīng)答信號有效持續(xù)的時間,確保采樣數(shù)據(jù)的正確性。目前各種器件中提供的雙時鐘FIFO宏單元很好的提供了對異步雙時鐘的訪問,單元的內(nèi)部有協(xié)調(diào)兩個時鐘的電路,確保讀寫的正確性??梢岳眠@個器件完成數(shù)據(jù)的同步。1. 采用全局時鐘,不要將時鐘參與運算。系統(tǒng)提供一定數(shù)量的全局時鐘線,在布局布線時,盡量滿足這些信號的要求以減小時鐘偏移和傾斜。如果時序安排不合理使用了較多gated clock,那么這些時鐘的偏斜就會較大,不能保障建立時間和保持時間,導(dǎo)致電路工作頻率降低或無法工作。2. 以寄存器為邊界劃分工作模塊。在設(shè)計較大規(guī)模的電路時,分模塊設(shè)計是必不可少的,在各模塊通過之后再進行系統(tǒng)的聯(lián)調(diào)。但由于在單模塊調(diào)試和聯(lián)調(diào)時布線資源的占用緊張程度不同,使得每個模塊的輸出無法保持與單獨布線時相同,在聯(lián)調(diào)時造成困難。如果每一個模塊的輸出端口都采用寄存器輸出,那么即使在整體布局布線后,各模塊的輸出依然可以保證原來的時序,這使得聯(lián)調(diào)的工作效率大大提高。加入這些寄存器也使得電路的可測性有所提高。3. 組合邏輯盡量采用并行結(jié)構(gòu),降低寄存器間組合路徑的延遲是提高系統(tǒng)工作頻率最主要的手段,因此在完成相同功能的前提下應(yīng)該盡量使用并行邏輯,如圖6所示。如果沒有優(yōu)先級要求應(yīng)該盡量采用case語句來描述,這樣綜合出來的電路并行度要大一些,如果采用if-then-else結(jié)構(gòu),綜合出來的電路都是串行的,增大了時延路徑。4. 在描述中應(yīng)該消除鎖存器,如果某個數(shù)據(jù)需要保存應(yīng)該合理安排使用寄存器,因為鎖存器在整個工作電平有效期間都對輸入敏感,輸入中的任何毛刺經(jīng)過鎖存器后都不會消除,這樣使得在其后的組合電路發(fā)生競爭冒險的可能性大為提高,影響電路性能。一些不適當(dāng)?shù)拿枋鲆矔沟卯a(chǎn)生不必要的鎖存器,增加了電路的面積。5. 在設(shè)計中應(yīng)該盡量采用同步設(shè)計,信號被時鐘采樣后再參與邏輯運算,這樣可以隔斷組合路徑,也可以消除毛刺。在設(shè)計中,組合信號的輸出不允許反饋作為該組合邏輯的輸入,這樣可以避免組合環(huán)。

注意事項

本文(FPGACPLD數(shù)字電路設(shè)計經(jīng)驗)為本站會員(jun****875)主動上傳,裝配圖網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對上載內(nèi)容本身不做任何修改或編輯。 若此文所含內(nèi)容侵犯了您的版權(quán)或隱私,請立即通知裝配圖網(wǎng)(點擊聯(lián)系客服),我們立即給予刪除!

溫馨提示:如果因為網(wǎng)速或其他原因下載失敗請重新下載,重復(fù)下載不扣分。




關(guān)于我們 - 網(wǎng)站聲明 - 網(wǎng)站地圖 - 資源地圖 - 友情鏈接 - 網(wǎng)站客服 - 聯(lián)系我們

copyright@ 2023-2025  zhuangpeitu.com 裝配圖網(wǎng)版權(quán)所有   聯(lián)系電話:18123376007

備案號:ICP2024067431-1 川公網(wǎng)安備51140202000466號


本站為文檔C2C交易模式,即用戶上傳的文檔直接被用戶下載,本站只是中間服務(wù)平臺,本站所有文檔下載所得的收益歸上傳人(含作者)所有。裝配圖網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對上載內(nèi)容本身不做任何修改或編輯。若文檔所含內(nèi)容侵犯了您的版權(quán)或隱私,請立即通知裝配圖網(wǎng),我們立即給予刪除!