陶子愚
(武漢紡織大學(xué)外經(jīng)貿(mào)學(xué)院,湖北武漢,430073)
隨著集成電路設(shè)計(jì)與制造工藝水平的提高,系統(tǒng)設(shè)計(jì)向高速度、低電壓、低功耗發(fā)展,對(duì)電路的要求更高。為滿足現(xiàn)代電子系統(tǒng)設(shè)計(jì)的需要,可編程邏輯器件(Programmable Logic Device,PLD)應(yīng)運(yùn)而生,目前已是數(shù)字系統(tǒng)設(shè)計(jì)的主要硬件基礎(chǔ)。同時(shí)設(shè)計(jì)電路的方法也由傳統(tǒng)的依賴電路原理圖的人工方法過渡到基于計(jì)算機(jī)語言的現(xiàn)代設(shè)計(jì)方法。利用硬件描述語言(HDL),開發(fā)者很容易實(shí)現(xiàn)復(fù)雜電路系統(tǒng)的設(shè)計(jì),針對(duì)目前這方面的書籍和文章主要講述了硬件描述語言語法和應(yīng)用范例,而關(guān)于在電路系統(tǒng)設(shè)計(jì)中CPLD/FPGA設(shè)計(jì)經(jīng)驗(yàn)和方法顯得尤為重要。本文講述了基于ATA主機(jī)控制器設(shè)計(jì)目標(biāo)的基本思想和方法。
ATA接口廣泛用于高速數(shù)據(jù)存儲(chǔ),能實(shí)現(xiàn)數(shù)據(jù)連續(xù)實(shí)時(shí)記錄。外掛一個(gè)硬盤的海量存儲(chǔ)系統(tǒng)實(shí)現(xiàn)在Al tera 公司CycloneII系列EP2C35F672C8芯片內(nèi)共消耗2904個(gè)LE和2410個(gè)寄存器資源,綜合后最高時(shí)鐘頻率為114.97HMz。在成功設(shè)計(jì)出的海量存儲(chǔ)系統(tǒng)中,系統(tǒng)主時(shí)鐘80MHz,它是通過采用外部40MHz晶振經(jīng)過芯片EP2C35F672C8內(nèi)部的鎖相環(huán)(PLL)進(jìn)行2倍頻來實(shí)現(xiàn)的,ATA主機(jī)控制器模塊采用PIO模式4和Ul tra DMA模式5進(jìn)行工作,實(shí)現(xiàn)了UDMA數(shù)據(jù)突發(fā)速率80MB/s和持續(xù)速率40MB/s傳輸。ATA主機(jī)控制器和USB主機(jī)控制器模塊相連,能與PC機(jī)通信。當(dāng)外部信源為8位寬的并行數(shù)據(jù)時(shí),采用串并轉(zhuǎn)換和異步FIFO實(shí)現(xiàn)與硬盤16位并行數(shù)據(jù)兼容及數(shù)據(jù)同步;整個(gè)ATA硬盤控制器采用狀態(tài)機(jī)設(shè)計(jì),為使系統(tǒng)工作穩(wěn)定,采用了異步復(fù)位方式。在編寫Veri log HDL代碼時(shí),i f和else語句配對(duì)用使,避免生成鎖存器,減少后級(jí)電路的競(jìng)爭(zhēng)冒險(xiǎn)現(xiàn)象;盡量使用全局時(shí)鐘,避免產(chǎn)生毛刺;在主機(jī)讀取硬盤數(shù)據(jù)時(shí),使用雙邊沿檢測(cè)電路來接收數(shù)據(jù)。
海量存儲(chǔ)系統(tǒng)內(nèi)部的一個(gè)ATA主機(jī)控制模塊可以實(shí)現(xiàn)40MB/s及以下速率并行數(shù)據(jù)的傳送;當(dāng)外部信源速率為80MB/s時(shí),可采用面積換速度、乒乓操作等技術(shù)來實(shí)現(xiàn)數(shù)據(jù)傳輸;當(dāng)外部信源為160MB/s時(shí),流水線或并行處理等能滿足設(shè)計(jì)要求。
復(fù)雜可編程邏輯器件(Complex Programmable Logic Device, CPLD)主要由宏單元(Macrocel ls)、可編程I/O單元、可編程內(nèi)部連線等部分組成。現(xiàn)場(chǎng)可編程門陣列(Field Programmable Gate Array, FPGA) 內(nèi)部結(jié)構(gòu)包含邏輯單元陣列、內(nèi)部連線、輸入輸出單元等。CPLD與FPGA集成度較高,屬于高密度PLD。兩者功能基本相同、設(shè)計(jì)流程相似且使用EDA軟件的設(shè)計(jì)方法也沒太大區(qū)別,只是實(shí)現(xiàn)原理略有不同。但CPLD由于觸發(fā)器有限乘積項(xiàng)多,更適合組合邏輯設(shè)計(jì),而FPGA觸發(fā)器資源豐富,更適用于時(shí)序邏輯設(shè)計(jì)。另外,F(xiàn)PGA比CPLD的集成度高,更適合復(fù)雜系統(tǒng)設(shè)計(jì)。在系統(tǒng)設(shè)計(jì)時(shí),根據(jù)所選器件型號(hào)充分發(fā)揮其性能,故在大多數(shù)情況下,二者并未加以區(qū)分。根據(jù)經(jīng)驗(yàn)總結(jié)主要涉及到CPLD/FPGA開發(fā)設(shè)計(jì)的基本方法、常用模塊等關(guān)鍵技術(shù)。
在FPGA設(shè)計(jì)中,異步時(shí)序電路易產(chǎn)生毛刺,而同步電路易于控制寄存器的異步復(fù)位/置位端,可避免受溫度、電壓、工藝的影響,易于消除電路的毛刺,設(shè)計(jì)可靠穩(wěn)定,及有利于組織流水線提高系統(tǒng)工作頻率等優(yōu)點(diǎn)。根據(jù)實(shí)際經(jīng)驗(yàn),總結(jié)出以下同步電路設(shè)計(jì)規(guī)則。
(1)系統(tǒng)采用統(tǒng)一時(shí)鐘
在系統(tǒng)設(shè)計(jì)中,盡量采用一個(gè)主時(shí)鐘,同時(shí)使用同一個(gè)時(shí)鐘沿。在FPGA設(shè)計(jì)中,避免使用多時(shí)鐘網(wǎng)絡(luò)。在各個(gè)模塊設(shè)計(jì)中,推薦所有輸入、輸出端口均采用寄存器連接,即寄存器當(dāng)異步接口考慮。
(2)模塊采用統(tǒng)一時(shí)鐘
當(dāng)電路系統(tǒng)不能用同步電路實(shí)現(xiàn)時(shí),可分割成若干個(gè)局部同步電路,一個(gè)模塊盡量采用同一時(shí)鐘。各個(gè)局部同步電路接口當(dāng)作異步接口處理。
(3)系統(tǒng)實(shí)際工作頻率小于理論最高頻率
系統(tǒng)實(shí)際最高工作頻率不應(yīng)大于理論最高頻率,留有足夠的設(shè)計(jì)余量,保證芯片可靠穩(wěn)定工作。電路設(shè)計(jì)中寄存器、狀態(tài)機(jī)等在復(fù)位時(shí)應(yīng)處于已知狀態(tài)。
(4)延時(shí)采用電路邏輯實(shí)現(xiàn)
同步電路延時(shí)采用電路邏輯來實(shí)現(xiàn),對(duì)于較大和特定要求的延時(shí),一般用高速時(shí)鐘產(chǎn)生一個(gè)計(jì)數(shù)器,根椐計(jì)數(shù)值來控制延時(shí);對(duì)于較小的延時(shí)常用D觸發(fā)器來實(shí)現(xiàn)信號(hào)同步。
(5)盡量避免外設(shè)信號(hào)
在系統(tǒng)設(shè)計(jì)中,考慮到電路板上元器件焊接、走線等因素,應(yīng)避免檢測(cè)或判斷芯片引腳所分配的外設(shè)信號(hào),否則,易造成系統(tǒng)不穩(wěn)定。如在狀態(tài)機(jī)設(shè)計(jì)中,若檢測(cè)外部管腳信號(hào)時(shí)經(jīng)常出現(xiàn)狀態(tài)不跳轉(zhuǎn)。因此需要嚴(yán)格的控制時(shí)序。
2.2.1 前后級(jí)數(shù)據(jù)速率匹配
流水線是高速設(shè)計(jì)中常用的技巧,具體指數(shù)據(jù)處理流程和順序操作的設(shè)計(jì)思想,把處理流程分為多個(gè)步驟,數(shù)據(jù)是單向的,沒有反饋或迭代運(yùn)算。前級(jí)輸出是后級(jí)輸入,并且數(shù)據(jù)速率相匹配。為達(dá)到流水線設(shè)計(jì)于前后級(jí)數(shù)據(jù)速率匹配的目的,須對(duì)各個(gè)步驟數(shù)據(jù)流量進(jìn)行分析。若前后級(jí)操作時(shí)間相等,前級(jí)的輸出直接匯入后級(jí)輸入;若快于后級(jí)操作,則須通過串并轉(zhuǎn)換、邏輯復(fù)制等手段將數(shù)據(jù)分流,或者對(duì)前級(jí)數(shù)據(jù)先存儲(chǔ)后處理方式來讓數(shù)據(jù)流量匹配;若慢于后級(jí)操作,則需前級(jí)數(shù)據(jù)進(jìn)行緩存,然后匯入后級(jí)輸入,并要注意速率匹配。
2.2.2 用乒乓操作實(shí)現(xiàn)高速數(shù)據(jù)存儲(chǔ)
乒乓操作常用于數(shù)據(jù)流控制處理,其數(shù)據(jù)流程描述:輸入數(shù)據(jù)流通過輸入數(shù)據(jù)選擇單元,等時(shí)分配到兩個(gè)數(shù)據(jù)緩沖區(qū),然后經(jīng)過輸出數(shù)據(jù)流選擇單元,按節(jié)拍輪流相互切換連續(xù)不斷地把數(shù)據(jù)送到數(shù)據(jù)流處理模塊。其優(yōu)點(diǎn)是實(shí)現(xiàn)連續(xù)數(shù)據(jù)操作,有利于組織流水線處理、節(jié)約緩沖區(qū)空間,還可達(dá)到低速模塊處理高速數(shù)據(jù)的目的。例如:當(dāng)外部信源持續(xù)速率80MB/s時(shí),由于一個(gè)硬盤的連續(xù)存儲(chǔ)速率最高為40MB/s,故可采用兩個(gè)硬盤通過乒乓操作來實(shí)現(xiàn)存儲(chǔ),其數(shù)據(jù)寫入通道結(jié)構(gòu)框圖。
串并轉(zhuǎn)換和并串轉(zhuǎn)換,兩者過程相反,但所用邏輯資源基本相同,可采用寄存器、RAM等實(shí)現(xiàn)。對(duì)于排序規(guī)則的轉(zhuǎn)換,可用case語句或if語句來實(shí)現(xiàn);而較復(fù)雜的轉(zhuǎn)換可使用狀態(tài)機(jī)來解決。
數(shù)據(jù)接口同步通常采用請(qǐng)求應(yīng)答的握手機(jī)制或同步指示信號(hào),也可使用RAM或FIFO等來實(shí)現(xiàn)。對(duì)于高速系統(tǒng)設(shè)計(jì),添加時(shí)序約束的方法有利于提高工作頻率和進(jìn)行系統(tǒng)分析。
電路系統(tǒng)設(shè)計(jì)中,一般都需要硬件復(fù)位電路。硬件復(fù)位分為異步復(fù)位和同步復(fù)位兩種,異步復(fù)位可靠性強(qiáng),而同步復(fù)位有時(shí)會(huì)出現(xiàn)不定狀態(tài)。根據(jù)器件特性,綜合布線工具對(duì)異步復(fù)位和同步復(fù)位的實(shí)現(xiàn)往往不同,并且對(duì)系統(tǒng)最高工作頻率有影響。為保證系統(tǒng)工作穩(wěn)定性,一般仍采用異步復(fù)位方式。
當(dāng)組合邏輯函數(shù)鐘空觸發(fā)器時(shí),常會(huì)存在門控時(shí)鐘,其最大缺點(diǎn)是容易產(chǎn)生毛刺,使電路誤操作。一般采用全局時(shí)鐘來替代門控時(shí)鐘,或使用寄存器使能端,在不增加資源的情況下,只要滿足建立時(shí)間要求,就可避免毛刺。門控時(shí)鐘也能穩(wěn)定工作,但滿足兩個(gè)條件:一是驅(qū)動(dòng)時(shí)鐘的邏輯必須只包含一個(gè)與門或一個(gè)或門。若采用任何附加邏輯,則在某些情況下工作會(huì)出現(xiàn)由競(jìng)爭(zhēng)產(chǎn)生的毛刺;二是邏輯電路的一個(gè)輸入作為實(shí)際時(shí)鐘,其他所有的輸入必須當(dāng)作地址或控制線,并且遵守相對(duì)于時(shí)鐘的建立和保持時(shí)間約束。
在CPLD/FPGA設(shè)計(jì)中,對(duì)于雙邊沿信號(hào)來說,一般綜合工具都不支持,所以如何把雙邊沿轉(zhuǎn)換成單邊沿成為系統(tǒng)設(shè)計(jì)的關(guān)鍵。在此講解了采用時(shí)鐘檢測(cè)信號(hào),出現(xiàn)變化即為上升沿/下降沿。當(dāng)被測(cè)信號(hào)與檢測(cè)時(shí)鐘相關(guān)時(shí),可不用第一個(gè)觸發(fā)器。
以寄存器來劃分工作模塊,在電路描述中應(yīng)該消除鎖存器。如果某個(gè)數(shù)據(jù)需要保存應(yīng)該使用寄存器,因?yàn)殒i存器在整個(gè)電平有效期間對(duì)輸入信號(hào)敏感,輸入毛刺可以通過鎖存器進(jìn)行傳播,致使后級(jí)組合邏輯電路發(fā)生競(jìng)爭(zhēng)冒險(xiǎn)的可能性大大提高,影響整個(gè)電路的性能。不適當(dāng)?shù)拿枋鲆矔?huì)產(chǎn)生鎖存器,消耗了資源。
本文僅對(duì)CPLD/FPGA設(shè)計(jì)中一般規(guī)律和技巧加以介紹和分析,并未深入討論,其實(shí)這些經(jīng)驗(yàn)也不是絕對(duì)的,隨著微電子工藝和EDA技術(shù)的發(fā)展,很多設(shè)計(jì)規(guī)則在不斷發(fā)生變化。只有在實(shí)踐中,勤于思考,細(xì)心體會(huì),認(rèn)真總結(jié),掌握CPLD/FPGA的設(shè)計(jì)思想和方法,對(duì)電路系統(tǒng)設(shè)計(jì)大有益處。
[1]Ciletti,M ichael D,“Advanced Digital Design w ith the Verilog HDL”Upper Sadd le River, NJ:Prentice Hall,2003.
[2]The Programmable Logic Data Book. San Jose, CA: Xilinx,Inc., 1994.
[3]W. S. Carter, “The future of programmable logic and its impact on digital system design,” in IEEE Int. Conf. Computer Design:VLSI in Com puters and Processors, 1994, pp. 10-16.
[4]Sutherland S.Verilog 2001.Boston:Kluwer,2002.