摘 要: 在8位MCU" title="MCU">MCU IP" title="IP">IP核設(shè)計(jì)中,數(shù)據(jù)通道" title="數(shù)據(jù)通道">數(shù)據(jù)通道部分的設(shè)計(jì)是整個(gè)設(shè)計(jì)的關(guān)鍵之一,。采用自頂向下的設(shè)計(jì)方法,,提出了一種特定的層次化數(shù)據(jù)通道模型。該數(shù)據(jù)通道模型由整齊的時(shí)鐘節(jié)拍控制數(shù)據(jù)通道的開啟,,經(jīng)過精心設(shè)計(jì)的各層子數(shù)據(jù)通道的選通,,有效地避免了內(nèi)部數(shù)據(jù)總線讀寫沖突,,規(guī)范了設(shè)計(jì),降低了功耗,,縮短了設(shè)計(jì)周期,。
關(guān)鍵詞: MCU IP 數(shù)據(jù)通道 Verilog HDL
隨著IC產(chǎn)業(yè)的發(fā)展,IP核的需求越來越高,。微控制器MCU(Micro Control Unit)是嵌入式系統(tǒng)的核心,,8位MCU IP核具有很高的通用性和靈活性,廣泛地應(yīng)用于工業(yè)控制,、機(jī)械設(shè)備,、家用電器以及汽車等各個(gè)領(lǐng)域。本文設(shè)計(jì)的MCU IP核與Microchip公司的PIC16C57完全兼容[1],。MCU IP核采用哈佛結(jié)構(gòu),,內(nèi)部單元可簡(jiǎn)化為時(shí)序控制和數(shù)據(jù)通道兩部分。時(shí)序控制部分為數(shù)據(jù)通道提供控制信號(hào),,控制數(shù)據(jù)流動(dòng)方向以及數(shù)據(jù)通路的選擇,,它是IP核的指揮中心;數(shù)據(jù)通道部分在控制部分的控制下,,具體實(shí)現(xiàn)MCU IP核的指令功能,,它是影響MCU性能、功耗等因素的關(guān)鍵,,是整個(gè)芯片設(shè)計(jì)的重點(diǎn),。
本文在設(shè)計(jì)該款MCU IP核的數(shù)據(jù)通道部分過程中,提出了一種特定的數(shù)據(jù)通道模型,;最后,,通過對(duì)整個(gè)MCU IP核仿真綜合,對(duì)該數(shù)據(jù)通道模型進(jìn)行了驗(yàn)證,。
1 數(shù)據(jù)通道模型及數(shù)據(jù)總線Verilog HDL" title="Verilog HDL">Verilog HDL模型
1.1數(shù)據(jù)通道模型結(jié)構(gòu)圖
本文設(shè)計(jì)的MCU數(shù)據(jù)通道模型包含各數(shù)據(jù)通道單元及單條雙向數(shù)據(jù)總線,。其中數(shù)據(jù)通道單元主要由特殊功能寄存器、通用寄存器及運(yùn)算單元ALU等電路組成,,每個(gè)通道單元還可再分為多個(gè)子通道單元,。數(shù)據(jù)通道頂層模型如圖1所示,數(shù)據(jù)主要在數(shù)據(jù)總線及各數(shù)據(jù)通道單元中流動(dòng),,由一條雙向數(shù)據(jù)總線完成每個(gè)數(shù)據(jù)組元的讀寫操作,,充當(dāng)每個(gè)組元源總線及目的總線雙重功能,并由特定電路完成總線數(shù)據(jù)的讀寫操作,。該數(shù)據(jù)通道模型的最大特點(diǎn)為:通過n個(gè)子通道選擇信號(hào),,各數(shù)據(jù)通道單元內(nèi)部可再分為n個(gè)子數(shù)據(jù)通道,由1/n譯碼器實(shí)現(xiàn)每一個(gè)時(shí)刻只有一條子通道選通,。上層的數(shù)據(jù)通道控制信號(hào)仍然有效,,作為子層數(shù)據(jù)通道的公共開關(guān)[2],。依次類推,該數(shù)據(jù)通道模型可以是多層的,。數(shù)據(jù)通道層次模型如圖2所示,。
數(shù)據(jù)通道模型內(nèi)數(shù)據(jù)的流動(dòng)在時(shí)間軸上是時(shí)刻向前的,而數(shù)據(jù)流動(dòng)的軌跡則呈現(xiàn)為相互環(huán)繞的螺旋形,。
1.2 內(nèi)部數(shù)據(jù)總線的Verilog HDL模型
數(shù)據(jù)通道模型中內(nèi)部數(shù)據(jù)總線分別由三態(tài)門和多路選擇器實(shí)現(xiàn)讀寫操作,,使用特定的硬件描述語言Verilog HDL代碼模型進(jìn)行描述。對(duì)于掛接n個(gè)數(shù)據(jù)通道單元的m位數(shù)據(jù)通道內(nèi)部數(shù)據(jù)總線,,讀,、寫兩種操作的Verilog HDL代碼模型分別表示如下[3]:
(1)數(shù)據(jù)總線讀操作代碼模型
wire [m-1:0] anout;
assign anout=controln?dbus:{m’{1’bz}};
……
其中,anout[m-1:0]是n個(gè)數(shù)據(jù)通道單元n的輸出數(shù)據(jù),,controln是第n個(gè)數(shù)據(jù)通道單元的寫操作控制信號(hào),,dbus[m-1]是m位數(shù)據(jù)總線數(shù)據(jù)。
(2) 數(shù)據(jù)總線的寫操作代碼模型
wire [m-1:0] dbus;
assign dbus=sel1,?a1out:
sel2,?a2out:
......
seln?anout;
其中,,dbus[m-1]是m位數(shù)據(jù)總線數(shù)據(jù),;a1out,a2out......anout是數(shù)據(jù)通道單元輸出數(shù)據(jù),;sel1,sel2......seln是數(shù)據(jù)單元選通條件。
2 設(shè)計(jì)實(shí)現(xiàn)
本文以數(shù)據(jù)通道單元ALU為例介紹數(shù)據(jù)通道模型的層次結(jié)構(gòu),。ALU是MCU IP核的運(yùn)算單元,,是數(shù)據(jù)的加工處理部件,是數(shù)據(jù)通道中最特殊的數(shù)據(jù)通道單元,。它實(shí)現(xiàn)加,、減、與,、或,、異或、非,、左移,、右移、半字節(jié)交換等九種運(yùn)算,,其中前五種是雙操作數(shù)操作,,其余四種是單操作數(shù)操作。對(duì)于雙操作數(shù)操作,,ALU數(shù)據(jù)通道單元一邊采用兩條兩個(gè)源操作數(shù)數(shù)據(jù)通道,,另一邊采用一條目標(biāo)操作數(shù)數(shù)據(jù)通道,;而單操作數(shù)操作僅需開啟一條源操作數(shù)數(shù)據(jù)通道。
本文的ALU采用低功耗設(shè)計(jì),。通過控制部分譯碼得出ALU主要實(shí)現(xiàn)四種運(yùn)算:算術(shù)運(yùn)算,、邏輯運(yùn)算、移位運(yùn)算以及半字節(jié)交換運(yùn)算,。本文通過加,、減操作復(fù)用一個(gè)8位超前進(jìn)位加法器,將ALU模塊分為8個(gè)運(yùn)算單元,,構(gòu)成8個(gè)子數(shù)據(jù)通道,。通過對(duì)ALU子數(shù)據(jù)通道選通信號(hào)aluop[2:0]進(jìn)行譯碼對(duì)8條子通道進(jìn)行選通,如表1所示,。在系統(tǒng)復(fù)位或者不工作時(shí),,各運(yùn)算單元處于休眠狀態(tài);在每條指令的執(zhí)行周期,,ALU中8個(gè)子數(shù)據(jù)通道始終只有一條子數(shù)據(jù)通道處于選通工作狀態(tài),。不同類的指令對(duì)應(yīng)不同的數(shù)據(jù)通道,把對(duì)ALU運(yùn)算的控制轉(zhuǎn)化為對(duì)ALU內(nèi)子數(shù)據(jù)通道的選擇,,降低了ALU整體功耗[4],。
一般來說,數(shù)據(jù)通道的選通由選通信號(hào)控制,,而數(shù)據(jù)通道的開啟必須由整個(gè)MCU IP核控制部分產(chǎn)生的四相不重疊時(shí)鐘節(jié)拍控制,,分別為clk1、clk2,、clk3,、clk4。時(shí)鐘節(jié)拍不參與數(shù)據(jù)通道的選擇,,所起作用只是數(shù)據(jù)通道的開啟,。數(shù)據(jù)通道內(nèi)數(shù)據(jù)的流動(dòng)是有方向的,本文中數(shù)據(jù)流動(dòng)的方向性體現(xiàn)為不同時(shí)鐘節(jié)拍控制的不同數(shù)據(jù)通道的開啟,。以單操作數(shù)指令半字節(jié)交換指令(SWAP)為例說明,,半字節(jié)交換指令只需開啟一條源操作數(shù)通道。如圖3所示,,控制部分在clk1時(shí)取出指令,,產(chǎn)生控制信號(hào),進(jìn)入數(shù)據(jù)通道操作,;在clk2時(shí),,在存儲(chǔ)單元中選擇源操作數(shù)寫入數(shù)據(jù)總線,開啟ALU運(yùn)算單元的源操作數(shù)alu_xbus_a[7:0]數(shù)據(jù)通道,此時(shí)內(nèi)部雙向數(shù)據(jù)總線充當(dāng)ALU源總線,;在clk3時(shí),,根據(jù)ALU模塊子通道選通信號(hào)aluop[3:0]選擇ALU功能模塊SWAP,開啟源操作數(shù)進(jìn)入ALU進(jìn)行半字節(jié)交換運(yùn)算的數(shù)據(jù)通道,;在clk4時(shí),,將ALU運(yùn)算單元的運(yùn)算結(jié)果aluout[7:0]通過數(shù)據(jù)總線寫入到各目的數(shù)據(jù)通道單元中,即開啟目的操作數(shù)數(shù)據(jù)通道,,此時(shí)內(nèi)部雙向數(shù)據(jù)總線充當(dāng)ALU目的總線,。
需要說明的是,圖3中數(shù)據(jù)databus[7:0]來自數(shù)據(jù)總線,,由數(shù)據(jù)通道單元特殊功能寄存器和通用寄存器提供數(shù)據(jù),。其中特殊功能寄存器包括F0間址寄存器、F1實(shí)時(shí)時(shí)鐘/計(jì)數(shù)寄存器RTCC,、F2程序計(jì)數(shù)器PC,,F(xiàn)3狀態(tài)計(jì)數(shù)器STATUS、F4寄存器選擇寄存器FSR以及F5,、F6,、F7 I/O寄存器??梢韵蛳略俜譃?條子數(shù)據(jù)通道,,子通道選通信號(hào)為fsel[2:0],而上層數(shù)據(jù)通道開關(guān)控制信號(hào)為rf_spr_re、rf_spr_we,,即特殊功能寄存器讀寫控制信號(hào),。其具體實(shí)現(xiàn)與ALU數(shù)據(jù)通道單元類似,這里不再贅述,。
在該款MCU IP核數(shù)據(jù)通道模型中,,數(shù)據(jù)總線全部采用本文所述的Verilog HDL代碼模型描述?;谥行膰?guó)際SMIC 0.35μm工藝庫(工作電壓為3伏),使用Synopsys公司VCS和 DC對(duì)該款MCU IP核進(jìn)行了仿真綜合,,并進(jìn)行了功耗分析,。綜合分析結(jié)果得出,該數(shù)據(jù)通道電路結(jié)構(gòu)規(guī)整,,設(shè)計(jì)得到了簡(jiǎn)化,,總體功耗約為49.5980mW,實(shí)現(xiàn)了低功耗設(shè)計(jì),。
本文使用固定電路結(jié)構(gòu)描述內(nèi)部數(shù)據(jù)總線,,通過特定層次化數(shù)據(jù)通道模型的設(shè)計(jì),體現(xiàn)了自頂向下(Top-Down)的設(shè)計(jì)方法,,降低了整個(gè)MCU IP 核設(shè)計(jì)的復(fù)雜度,,縮短了設(shè)計(jì)周期,。該設(shè)計(jì)適用于大規(guī)模系統(tǒng)芯片設(shè)計(jì)。
參考文獻(xiàn)
1 pic16c5x.pdf. Microchip Technology Inc.,1998
2 鐘旭恒,,高明倫.基于數(shù)據(jù)通道指令流程圖的硬布線控制電路設(shè)計(jì). 微電子學(xué)與計(jì)算機(jī),,2001;(5):8~11
3 夏宇聞.復(fù)雜數(shù)字電路與系統(tǒng)的Verilog HDL設(shè)計(jì)技術(shù).北京:北京航空航天大學(xué)出版社,2003:13
4 羅 文,,楊 波.寄存器傳輸級(jí)低功耗設(shè)計(jì)方法.小型微型機(jī)算機(jī)系統(tǒng),,2004;(7):1207~1211
5 孫海平,李 偉.基于資源共享的ALU設(shè)計(jì).微電子學(xué)與計(jì)算機(jī),,2001;(5):16~20