理工大学学士学位论文
图3.5 ACC功能仿真
17
理工大学学士学位论文
波形分析:CLK周期为10ns,当时钟发生且为上升沿的时候,输入控功能制信号IA=0时,实现输入,把输入数据设置成从00000000到11111111依次递增1,输出信号始终为0来输出输入数据如图3.5可见,当IA=0输入数据,输出=输入,当IA=1数据没有被输入,出输出仍为上次输入,所以输出为00000000,00000010,00000100......由仿真波形可知,ACC模块设计功能成功实现。 3.5.3 控制器模块
说明:控制模块根据指令操作码和时序信号,产生各种操作控制信号
1.逻辑框图
开始HALT=1YIPC=0ESUM=0NIMAR=(T0+T3.LD+T3.ADD)’IIR=T2'IA=(T6.LD+T6.ADD)IDR=T1+T4.LD+T4.ADDIPC=T2+T5.LD+T5.ADDISUM=(T5.ADD)’ESUM=(T6.ADD)’EA=(T7.ADD)’EDR=T6.ADD+T7.ADD结束
图3.6 控制器CTRL程序流程图
18
理工大学学士学位论文
说明:输入信号为三个操作指令信号LD,ADD,HALT和T0-T7八个节拍脉冲及一个时钟信号CLK,输出为九个控制信号。当HALT=1时IPC=0和ESUM=0,当HALT=0时,9个控制信号别根据不同的节拍发生有不同的取值来执行各自控制功能。
2.VHDL源程序 LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL; USE IEEE.STD_LOGIC_ARITH.ALL; USE IEEE.STD_LOGIC_UNSIGNED.ALL; ENTITY CTRL IS
POTR(LD,ADD,HALT: IN STD_LOGIC; CLK: IN STD_LOGIC;
T0,T1,T2,T3,T4,T5,T6,T7:IN STD_LOGIC; IPC,IMAR,IDR,EDR,IA,EA,ISUM,ESUM,IIR: OUT STD_LOGIC;); END ENTITY;
ARCHITECTURE A OF CTRL IS BEGIN
PROCESS(LD,ADD,HALT) BEGIN
IF (HALT=’1’) THEN IPC<=’0’; ESUM<=’0’; ELSE
IMAR<=not(t0 or (t3 and ld)or (t3 and add)); IIR<=not t2;
IA<=not((t6 and ld)or(t6 and add )); IDR<=t1 or(t4 and ld) or (t4 and add); IPC<=t2 or (t5 and ld) or (t5 and add); ISUM<=not (t5 and add); ESUM<=not(t6 and add);
19
理工大学学士学位论文
EA<=not (t7 and add);
EDR<=(t6 an add) or (t7 and add); END IF; END PROCESS; END A;
3.控制器模块仿真波形
图3.7 控制器CTRL功能仿真
20
理工大学学士学位论文
波形分析:ADD,LD,T0-T7波形设置为0,1交替,HALT先为10ns的高电平之后皆为低电平,运行后结果如图3.7所示,根据公式 IMAR<=not(t0 or (t3 and ld)or (t3 and add)); IIR<=not t2;
IA<=not((t6 and ld)or(t6 and add )); IDR<=t1 or(t4 and ld) or (t4 and add); IPC<=t2 or (t5 and ld) or (t5 and add); ISUM<=not (t5 and add); ESUM<=not(t6 and add); EA<=not (t7 and add);
EDR<=(t6 and add) or (t7 and add); 可验证波行无误,CTRL模块功能设计成功。 3.5.4 节拍发生器
说明:用于产生T0-T7的8个节拍脉冲信号,是模型机按此节拍有序的工作 1.逻辑框图
开始TEMP(0)<=1TEMP(1)<=0TEMP(2)<=0TEMP(3)<=0TEMP(4)<=0TEMP(5)<=0TEMP(6)<=0TEMP(7)<=0CLR=0YNNCLK=1YTEMP(0)<=TEMP(7)TEMP(1)<=TEMP(0)TEMP(2)<=TEMP(1)TEMP(3)<=TEMP(2)TEMP(4)<=TEMP(3)TEMP(5)<=TEMP(4)TEMP(6)<=TEMP(5)TEMP(7)<=TEMP(6)结束
图3.8 节拍发生器程序流程图
21