全球旧事资料 分类
的PC是8BitS宽的,因此PC模块可以寻址独立的256个单元。PC_OUT地址输出信号是直接与程序存储器PCRAM相连的。PC_INC控制信号来自控制单元,若PC_INC有效则PC将执行加1操作。EN信号是程序计数器PC的使能控制信号,只有当该信号有效时PC的相应才能操作才能执行。
f32程序存储器PC_RAM
程序存储器是存储微处理器程序,即能执行特定功能的一组指令组合。图32显示了程序存储器的结构图。
图32程序存储器示意图
在设计程序存储器模块时,本文是自行设计寄存器堆型的存储器,直接使用一个数组存放二进制数据,通过VHDL编写一个一定长度的数组实现。因为程序计数器可以寻址到256条指令,所以程序存储器也必需可以至少存放128条16位的指令这样只需申请一个变量Ram,有256个元素每个元素16位即可。第一个数组元素下标表示存贮器的0号地址,第二个数组元素下标表示1号地址以此类推至第256个数组元素的下标即11111111号存贮器地址。程序存储器是一个可读可写的模块,其输入端口接入外围程序和地址输入端口,由WR异步控制其读写状态,WR高电平有效。当WR有效时,程序存储器为写状态,即将输入程序存入其输入地址对应的存储单元中即执行操作ramco
v_i
tegerwaddrwdata;当WR为低电平时,程序存储器处于读状态,其将程序计数器输出地址PC_OUT上对应的存储单元中的指令输出,即执行操作i
structio
ramco
v_i
tegerpc_i
。这样就可以通过存贮器数组元素和输入地址间的相互赋值实现“读存储器”,“写存储器”,既简单又容易实现。
f图33程序存储器外部接口信号
程序存储器模块的外部接口信号如图33所示,其中读状态地址来自PC模块,输出指令直接送往指令寄存器模块,写状态地址来自CPU输入地址,写入指令存储到对应地址单元中。
33指令寄存器模块
指令寄存器在时钟上升沿锁入从程序存储器PC_RAM中读取的指令,并保持到时钟的下一个上升沿,一条指令的执行从指令寄存器锁入指令开始。所以指令寄存器的作用是暂时存放取到的指令,是从程序存储器到控制单元和ALU模块中的中间缓冲模块。通过上一章的流水线分析部分、指令时序分析部分和程序存储器模块分析部分可以得到,在指令寄存器模块中,当前存放的并不是CPU正在执行的指令,而是下一条指令。同样道理可知,送入控制单元并进行指令译码也是下一条指令。这是由两级流水线的架构决定的,在两级流水线中,CPU在执行当前指令的同时指令寄存器取到下一条指令,并且控制器将下一条指令进行译码。
f图34指令寄r
好听全球资料 返回顶部