摘 要:8253作為Intel公司推出的可編程定時計數(shù)器,用來產(chǎn)生定時信號。分析傳統(tǒng)8253功能以及缺陷,結(jié)合FPGA的特點,設(shè)計支持8253控制字格式具有自主知識產(chǎn)權(quán)的32位可編程定時計數(shù)器軟核P32IT8253。詳細分析對設(shè)計中關(guān)鍵路徑的產(chǎn)生原因,給出一種便于在不同器件公司產(chǎn)品間移植的優(yōu)化設(shè)計方法。軟核通過仿真,下載到Xilinx的FPGA中。整個設(shè)計針對提升傳統(tǒng)8253/8254配合單片機或者接口板中控制電路的性能,提供了一種解決方案。
關(guān)鍵詞:可編程定時計數(shù)器;硬件描述語言;SOPC;IP軟核
中圖分類號:TP368.1文獻標識碼:B
文章編號:1004-373X(2008)24-001-03
Implementation and Design of 32 b PIT Soft Core Based on 8253
ZOU Jiaxuan,AO Faliang
(Guilin University of Electronic Technology,Guilin,541004,China)
Abstract:As a product launched by Intel,8253 is applied to generate time-lapse signal.8253 functional and its shortage are analysed,based on the character of FPGA,32 b Programmable Interval Timer(PIT) IP core supported by 8253 control words is designed.While analyzing the cause to critical path,to introduce a kind of optimized solution can be easy to transplant in any products from different companies.The IP has been passed simulation and downloaded in FPGA.The entire design provids a solution scheme,aiming at improving the performance of the traditional 8253/8254 controlled by single chip computer or PC interface board.
Keywords:programmable interval timer;hardware description language;SOPC;IP soft core
1 引 言
現(xiàn)場可編程門陣列[1](FPGA)是基于通過可編程互聯(lián)連接的可配置邏輯塊(CLB)矩陣的可編程半導(dǎo)體器件。與為特殊設(shè)計而定制的專用集成電路(ASIC)相對,F(xiàn)PGA可以針對所需的應(yīng)用或功能要求進行編程,而不需要擔(dān)憂投片失敗帶來的損失。
隨著半導(dǎo)體行業(yè)的發(fā)展,F(xiàn)PGA的成本越來越低,并且由于采用特征尺寸更小的工藝,芯片的速度也越快。在FPGA上根據(jù)以前傳統(tǒng)芯片的功能進行開發(fā)與擴展,具有速度更快,功能更強大,風(fēng)險更低,應(yīng)用便利等優(yōu)點。
傳統(tǒng)的8253作為一個Intel設(shè)計的一種PIT(Programmable Interval Timer,可編程計數(shù)/計時器),在數(shù)字電路、計算機系統(tǒng)以及實時控制系統(tǒng)中產(chǎn)生定時信號。8253的基本功能描述為[2]:單片集成3個獨立的16位計數(shù)器;每個計數(shù)器包含6種計數(shù)模式,可由程序設(shè)置和改變;每個計數(shù)器都可采用二進制或二到十進制計數(shù);但是8253存在以下不足:
(1) 由于是NMOS工藝,8253的工作頻率為2 MHz,即使是改進的8254它的工作頻率也僅為10 MHz;
(2) 每個計數(shù)器沒有復(fù)位信號,輸出的初始狀態(tài)不確定;
(3) 雖然計數(shù)/計時范圍0~FFFFH,但當(dāng)計數(shù)/計時單位范圍在00FFH~FFFFH時,計數(shù)器初值的裝載要超過2個時鐘周期,使用軟件觸發(fā)的模式時,這樣的裝載方式會降低脈沖的寬度。
通過對PIT8253/8254工作方式的分析后,采用RTL級層次性描述建立HDL模型,在支持8253/8254控制字的基礎(chǔ)上開發(fā)出IP軟核P32IT8253,在XILINX的低成本FPGA產(chǎn)品Spartan3(XC3S400)上驗證。單個計數(shù)器工作頻率達到62 MHz,計數(shù)范圍增為0~FFFFFFFFH,降低了FFH~FFFFFFFH范圍內(nèi)初值的載入時間,計數(shù)器兼容16位/32位計數(shù)模式。P32IT8253作為傳統(tǒng)8253/8254的替代產(chǎn)品,配合XILINX免費提供的嵌入式軟核Micro-blaze,可以很便利地將以前由單片機或微機控制的8253構(gòu)成的定時/計數(shù)系統(tǒng)改造為32位的系統(tǒng),實現(xiàn)了系統(tǒng)單片集成,提高了工作頻率,并提供更窄的輸出脈沖寬度。
2 8253/8254的功能分析
8253/8254包含24個引腳,每個引腳的功能如下[1]:
(1) D1~D8為雙向的數(shù)據(jù)輸入輸出;
(2) CS為芯片使能信號,低電平有效;
(3) RD為讀取有效信號,低電平有效;
(4) WR為寫入有效信號,低電平有效;
(5) A0~A1為地址選通信號,選擇操作的是0~2號計數(shù)中的1個或是控制字寄存器;
(6) Gat0~Gate2分別為0~2號計數(shù)器的工作控制信號;
(7) Clk0~CLk2分別對應(yīng)0~2號計數(shù)器的工作時鐘;
(8) Out0~Out2分別為0~2號計數(shù)器的輸出。
3 RTL級模型的設(shè)計
3.1 頂層模塊的劃分
系統(tǒng)采用自頂而下的設(shè)計方法(Top-down)。可編程計數(shù)器頂層模塊劃分為3個部分:數(shù)據(jù)緩存器,控制邏輯,3個獨立工作的計數(shù)器。16位數(shù)據(jù)總線的低8位同時也作為控制字的輸入,通過A1,A2端口來確定當(dāng)前輸入的數(shù)據(jù)是低8位還是狀態(tài)控制字。輸入的計數(shù)初值存儲在數(shù)據(jù)緩存器中(見圖1)。輸入的控制字存儲在控制邏輯模塊中。
3個獨立工作的計數(shù)器從功能上來說完全一致,可以通過對其中任意一個采用層次化的結(jié)構(gòu)描述,后進行同等調(diào)用。
3.2 控制邏輯的設(shè)計
出于對系統(tǒng)可讀性的考慮,并沒有采用文獻[3]的結(jié)構(gòu)將控制字寄存器與模式寄存器加入到計數(shù)器模塊,而是將控制字的存儲與模式信號的判別統(tǒng)一交由控制邏輯完成??刂七壿嫷闹饕饔萌缦拢?/p>
(1) 判斷外部數(shù)據(jù)總線的低8位是計數(shù)初值還是控制字,將控制字送入控制邏輯存貯;
(2) 完成對控制字的譯碼,確定計數(shù)器的序號,工作的方式,數(shù)據(jù)裝載的方式;
(3) 依據(jù)工作方式,控制數(shù)據(jù)裝載到數(shù)據(jù)緩存器;
(4) 控制數(shù)據(jù)緩存器輸入/輸出數(shù)據(jù);
(5) 控制對應(yīng)計數(shù)器裝載計數(shù)初值。
具體的外部信號與控制邏輯的關(guān)系如表1所示。
系統(tǒng)的控制邏輯內(nèi)部包含控制字譯碼任務(wù),由其完成對控制字的譯碼,并在內(nèi)部的控制總線上產(chǎn)生對應(yīng)的控制信號,控制3個獨立計數(shù)器的工作方式,同時控制邏輯還控制數(shù)據(jù)緩存器加載來自內(nèi)部總線或是外部總線的數(shù)據(jù)。因為整個系統(tǒng)已經(jīng)擴展到32位,對于傳統(tǒng)PIT8253/8254控制字也需進行拓展,主要是將模式2的高位由未定態(tài)變?yōu)榇_定態(tài),將原有的8位操作定義為現(xiàn)有的16位操作。同時出于對條件選擇遍歷的考慮將空余的2個模式控制字狀態(tài)定義為無操作狀態(tài),具體內(nèi)容如圖2所示。
3.3 計數(shù)器模塊的設(shè)計及優(yōu)化
計數(shù)器由控制總線上的信號控制數(shù)據(jù)的輸入/輸出。輸出信號發(fā)生器通過對減法器內(nèi)數(shù)值的判斷,產(chǎn)生不同的輸出的信號,如圖3所示。
計數(shù)器的核心是32位的無符號數(shù)硬件減法器,在計數(shù)信號有效的條件下,每個時鐘周期做1次減1運算。如果按文獻[4]及文獻[5]在系統(tǒng)的HDL模型建立過程中,對于減法計數(shù)操作建模時只用1個減號來實現(xiàn),由綜合工具自動將其綜合成硬件結(jié)構(gòu)。對于硬件實現(xiàn)的減法操作,首先對減數(shù)取補,然后與被減數(shù)執(zhí)行加法操作。32位的減1操作就轉(zhuǎn)變?yōu)槭?的加法操作。影響計數(shù)器工作速度的決定性因素就是加法動作的延時。
Initial_reg[31:0]-32'b1=Initial_reg[31:0]+32'b
1111_1111_1111_1111_1111_1111_1111_1111
通過對使用不同綜合工具后的結(jié)果檢查,無論是Altera的Quartus,還是Xilinx的ISE,以及Lattice的ISP,甚至是Cadence的SYNPLIFY都將上式綜合成RCA(行波進位加法器 Ripple-carry adder),考慮到在FPGA的布線資源中,快速進位鏈的速度明顯優(yōu)于LUT資源,EDA工具會自動將加法描述綜合成行RCA結(jié)構(gòu)。對于運算級別不大的場合,由于充分利用了快速進位鏈速度明顯優(yōu)于LUT的特點,比如8位加法器,RCA的效果明顯優(yōu)于HDL 模型的CLA(Carry Look ahead Adder,超前進位加法器)和PPA(Parallel Prefix Adder,并行前綴加法器)加法器。隨著運算級別增加,RCA的延時線性上升,快速進位鏈失去自身的優(yōu)勢。32位的RCA的最小輸出延時在CYCLONE Ⅱ中會接近17 ns。文獻[6]指出了不同結(jié)構(gòu)加法器性能的比較,并認為32位PPA加法器是同類加法器中是最快,具體的延時情況如表2所示。
如果采用HDL(硬件描述語言)和原理圖的混合設(shè)計方式,可以通過芯片公司提供的IP核實現(xiàn)并行加法器。以CYCLONEII 為例,輸入到輸出的最小延遲為6 ns。雖然性能上有大幅度的提升,但是當(dāng)更換器件時,由于不同器件公司IP核不兼容,整個系統(tǒng)必須重新設(shè)計。出于移植的便利性考慮,全部系統(tǒng)采用HDL語言設(shè)計,這樣的并行加法結(jié)構(gòu)雖然在性能上無法與器件公司提供的IP相比,但是也比RCA結(jié)構(gòu)的延時要少很多。完成對并行加法任務(wù)的綜合后,添加時序約束,確保32位減法結(jié)果同時輸出。
4 系統(tǒng)的驗證與測試
常用IP 軟核的測試最常用的方式是后仿真,通過對完成布局布線的IP軟核,添加測試激勵,觀察后仿真波形是否達到預(yù)期效果。現(xiàn)以計數(shù)器0工作在模式4為例,說明系統(tǒng)的工作。Data是外部16位雙端端口,既可以輸入數(shù)據(jù),也可以輸出數(shù)據(jù)。Read為讀信號,Write 為寫信號,高電平有效。A0,A1為地址位選通信號,根據(jù)表1,A0=0,A1=0時,說明當(dāng)前操作的是計數(shù)器0。首先寫入的計數(shù)初值為7,完成初值寫入后,Read信號為高,Data上將每個時鐘周期計數(shù)器的值都讀出來。因為是布局,布線后的仿真,內(nèi)部的信號已經(jīng)無法辨認,因此將計數(shù)器的值(Initial_reg)引出與Data總線上數(shù)據(jù)對比。在1次計數(shù)的周期內(nèi),寫入新的計數(shù)初值13,然后Gate0信號至低,對比initial_reg的值可以發(fā)現(xiàn),計數(shù)過程暫停。當(dāng)Gate0置高后,計數(shù)繼續(xù)。完成本次計數(shù)后,Out0 輸出1個負脈沖,計數(shù)初值更新為13。計數(shù)器以13為計數(shù)初值,在Gate0為高的條件下,繼續(xù)計數(shù),完成計數(shù)后Out0再次輸出1個負脈沖。脈沖寬度為1個時鐘周期。仿真結(jié)果如圖4所示。
完成后仿真后,掛載在Xilinx的Micro-blaze可編程嵌入式系統(tǒng)上進行的驗證,由Micro-blaze對IP核進行控制,充分利用了Micro-blaze 32位指令格式的特點,整個系統(tǒng)可以工作在50 MHz的時鐘下,基本達到了設(shè)計預(yù)期。
5 結(jié) 語
P32IT8253采用HDL語言設(shè)計整個系統(tǒng),具有較高的可讀性,便于在不同器件公司的硬件上進行移植。系統(tǒng)使用32位的計數(shù)通道,擴大計數(shù)范圍,降低了16位數(shù)據(jù)的裝載時間。系統(tǒng)定義專有的并行任務(wù),既滿足移植便利性,也兼容了速度上的大幅度提升。P32IT8253在Spartan3(XC3S400)上通過添加時序約束完成了布局布線的優(yōu)化,每個獨立工作的計數(shù)器工作的最高頻率可以達到62 MHz。由Micro-blaze軟核來控制P32IT8253軟核,以O(shè)PB總線相連接。整個系統(tǒng)可以用來取代傳統(tǒng)的由8位單片機控制或微機控制8253/8254的定時器/計數(shù)器,在增加集成度的同時更帶來了性能上的大幅度提升。
參考文獻
[1]Xilinx Corporation.FPGA 與ASIC對比[S].Xilinx,2008.
[2]Intel Corporation.8253-Programmable Interval Timer[S].1986.
[3]張義偉,韓微.可編程定時計數(shù)器8254軟核的設(shè)計[J].艦船電子工程,2005(2):68-71.
[4]閆永志,劉偉,何方.基于FPGA的可編程定時器/計數(shù)器8253的設(shè)計與實現(xiàn)[J].電子設(shè)計應(yīng)用,2004(2):26-28.
[5]趙世霞,楊豐,劉揭生.VHDL與微機接口設(shè)計[M].北京:清華大學(xué)出版社,2004.
[6]Zinunerman R.Binary Adder Architectures for Cell-based VLSI and their Synthesis[D].Swiss Federal Institute of Technology ,Zurich,1997:67-91.
[7][美]Samir Palnikar .Verilog-HDL數(shù)字設(shè)計與綜合[M].2版.北京:電子工業(yè)出版社,2004.
[8][美]Michael D Ciletti.Verilog-HDL高級數(shù)字設(shè)計[M].北京:電子工業(yè)出版社,2004.
[9][美]Micheal John Sebatian Smith.專用集成電路[M].第2版.北京:電子工業(yè)出版社,2004.
[10]潘松,黃繼業(yè),曾毓.SoPC技術(shù)實用教程[M].北京:清華大學(xué)出版社,2005.
[11][美]Barry P Brey.Intel Microprocessors: Architecture,Programming and Interfacing.Sixth Edition,2003.
作者簡介 鄒家軒 男,1982年出生,碩士研究生。研究方向為PPM專用集成電路的設(shè)計。
敖發(fā)良 男,1944年出生,教授,中國電子學(xué)會教育分會副主任委員,中國電子教育學(xué)會高教分會常務(wù)理事。