数据通道模型内数据的流动在时间轴上是时刻向前的,而数据流动的轨迹则呈现为相互环绕的螺旋形。
1.2 内部数据总线的Verilog HDL模型
数据通道模型中内部数据总线分别由三态门和多路选择器实现读写操作,使用特定的硬件描述语言Verilog HDL代码模型进行描述。对于挂接n个数据通道单元的m位数据通道内部数据总线,读、写两种操作的Verilog HDL代码模型分别表示如下[3]:
(1)数据总线读操作代码模型
wire [m-1:0] anout;
assign anout=controln?dbus:{m’{1’bz}};
……
其中,anout[m-1:0]是n个数据通道单元n的输出数据,controln是第n个数据通道单元的写操作控制信号,dbus[m-1]是m位数据总线数据。
(2) 数据总线的写操作代码模型
wire [m-1:0] dbus;
assign dbus=sel1?a1out:
sel2?a2out:
......
seln?anout;
其中,dbus[m-1]是m位数据总线数据;a1out,a2out......anout是数据通道单元输出数据;sel1,sel2......seln是数据单元选通条件。
2 设计实现
本文以数据通道单元ALU为例介绍数据通道模型的层次结构。ALU是MCU IP核的运算单元,是数据的加工处理部件,是数据通道中最特殊的数据通道单元。它实现加、减、与、或、异或、非、左移、右移、半字节交换等九种运算,其中前五种是双操作数操作,其余四种是单操作数操作。对于双操作数操作,ALU数据通道单元一边采用两条两个源操作数数据通道,另一边采用一条目标操作数数据通道;而单操作数操作仅需开启一条源操作数数据通道。
本文的ALU采用低功耗设计。通过控制部分译码得出ALU主要实现四种运算:算术运算、逻辑运算、移位运算以及半字节交换运算。本文通过加、减操作复用一个8位超前进位加法器,将ALU模块分为8个运算单元,构成8个子数据通道。通过对ALU子数据通道选通信号aluop[2:0]进行译码对8条子通道进行选通,如表1所示。在系统复位或者不工作时,各运算单元处于休眠状态;在每条指令的执行周期,ALU中8个子数据通道始终只有一条子数据通道处于选通工作状态。不同类的指令对应不同的数据通道,把对ALU运算的控制转化为对ALU内子数据通道的选择,降低了ALU整体功耗[4]。
一般来说,数据通道的选通由选通信号控制,而数据通道的开启必须由整个MCU IP核控制部分产生的四相不重叠时钟节拍控制,分别为clk1、clk2、clk3、clk4。时钟节拍不参与数据通道的选择,所起作用只是数据通道的开启。数据通道内数据的流动是有方向的,本文中数据流动的方向性体现为不同时钟节拍控制的不同数据通道的开启。以单操作数指令半字节交换指令(SWAP)为例说明,半字节交换指令只需开启一条源操作数通道。如图3所示,控制部分在clk1时取出指令,产生控制信号,进入数据通道操作;在clk2时,在存储单元中选择源操作数写入数据总线,开启ALU运算单元的源操作数alu_xbus_a[7:0]数据通道,此时内部双向数据总线充当ALU源总线;在clk3时,根据ALU模块子通道选通信号aluop[3:0]选择ALU功能模块SWAP,开启源操作数进入ALU进行半字节交换运算的数据通道;在clk4时,将ALU运算单元的运算结果aluout[7:0]通过数据总线写入到各目的数据通道单元中,即开启目的操作数数据通道,此时内部双向数据总线充当ALU目的总线。
需要说明的是,图3中数据databus[7:0]来自数据总线,由数据通道单元特殊功能寄存器和通用寄存器提供数据。其中特殊功能寄存器包括F0间址寄存器、F1实时时钟/计数寄存器RTCC、F2程序计数器PC,F3状态计数器STATUS、F4寄存器选择寄存器FSR以及F5、F6、F7 I/O寄存器。可以向下再分为8条子数据通道,子通道选通信号为fsel[2:0],而上层数据通道开关控制信号为rf_spr_re、rf_spr_we,即特殊功能寄存器读写控制信号。其具体实现与ALU数据通道单元类似,这里不再赘述。
在该款MCU IP核数据通道模型中,数据总线全部采用本文所述的Verilog HDL代码模型描述。基于中心国际SMIC 0.35μm工艺库(工作电压为3伏),使用Synopsys公司VCS和 DC对该款MCU IP核进行了仿真综合,并进行了功耗分析。综合分析结果得出,该数据通道电路结构规整,设计得到了简化,总体功耗约为49.5980mW,实现了低功耗设计。
本文使用固定电路结构描述内部数据总线,通过特定层次化数据通道模型的设计,体现了自顶向下(Top-Down)的设计方法,降低了整个MCU IP 核设计的复杂度,缩短了设计周期。该设计适用于大规模系统芯片开发设计。
参考文献
1 pic16c5x.pdf. Microchip Technology Inc.,1998
2 钟旭恒,高明伦.基于数据通道指令流程图的硬布线控制电路设计. 微电子学与计算机,2001;(5):8~11
3 夏宇闻.复杂数字电路与系统的Verilog HDL设计技术.北京:北京航空航天大学出版社,2003:13
4 罗 文,杨 波.寄存器传输级低功耗设计方法.小型微型机算机系统,2004;(7):1207~1211
5 孙海平,李 伟.基于资源共享的ALU设计.微电子学与计算机,2001;(5):16~20