2.3 执行模块的设计 执行模块是在VLIW微处理器所有模块中最复杂的模块,其主要功能是执行VLIW指令操作,并将执行的操作结果送到写回模块中。在执行模块中采用寄存器旁路的特点,寄存器旁路用于处理指令或者数据之间的相互冲突问题。 将执行模块划分为:顶层模块、操作1模块、操作2模块、操作3模块、功能执行模块、异常处理模块。顶层模块实现3种操作的数据与指令分流和中间变量的处理;操作1模块实现寄存器旁路的功能和数据的处理;操作2模块和操作3模块实现的功能与操作1模块相同,不同点在于中间数据冲突处理不一样;功能执行模块实现16种操作的具体功能;异常处理模块实现数据或指令的异常处理的具体功能。将各个模块连接就实现执行单元的整个功能。 2.4 寄存器堆的实现 寄存器堆的结构如图5所示。输入端的数据、指令是来自2个单元,一个是取指令单元数据和指令,另一个是写回单元的数据;输出的指令、数据要传输到执行单元中进行执行操作。因为3种操作是并行执行的,每一种操作功能都是一样,因此在某个输入信号下,经由某种操作单元时,在选择器MUX下,选择某种具体操作运算。在功能单元FU中,对取出的存储器数据进行相应的操作运算处理,并将操作处理的结果输出送到执行单元中。图中虚线表示将写回单元输送来的操作数据直接存储到存储器中。实现时,要注意处理数据的相关问题。
2.5 写回单元的设计 写回单元是VLIW微处理器的最后一个单元,它的功能是将执行单元的操作结果写回到寄存器堆中,并在读有效的情况下,输出相应的操作处理数据。该模块设计相对比较简单,要实现写回寄存器堆的数据和该数据的目标寄存器地址,以及读出处理单元的操作处理数据。 2.6 综合仿真与测试 将上述所设计的模块,运用原理图的设计方法,按图2 VLIW微处理模块划分结构进行相应的连接,并选择相应的器件进行编译测试,其仿真测试功能波形如图6所示。图中的波形图添加了中间变量寄存器的波形图,以便能够更好地对比输出波形,分析处理器功能。VLIW微处理器首先将要处理的数据装入寄存器中,利用寄存器寻址的方式,对数据进行相应的16种功能操作运算,然后利用读的功能读出操作处理的数据结果。
在图6中,添加的中间变量是寄存器地址(memoryarray),基本的输入有时钟信号(clock)、复位信号(reset)、指令(word)、数据(data)。复位信号为低电平时,电路处于有效的工作状态,输出相关的操作数据。运用装载指令对寄存器依次装入数据,在下一个时钟脉冲时,对寄存器的数据进行读出操作,输出数据有效信号输出高电平。要看到操作处理结果就必须用读的操作指令,操作执行的结果是存储到寄存器中。 基于FPGA实现微处理器的设计是一个热点,在主流设计中主要模块的划分一般大致相同,主要区别在于主要模块下的小模块划分是完全不相同的,并且实现与设计方式也不相同。在VLIW处理器设计中,细分各个小模块,运用硬件描述语言实现各个基本模块的功能,从而最终实现整个微处理器的逻辑功能,并在开发板进行相应的逻辑分析与功耗分析,为实际DSP并行处理器架构提供一定的参考基础。下阶段的主要方向是进行各个小部件的进一步优化设计,增强操作功能与操作指令的实现设计,进而设计实现浮点VLIW微处理器。 |