APP下载

基于quartus 制作微处理器

2020-04-21黄峻杰

通信电源技术 2020年5期
关键词:框图寄存器电路图

黄峻杰

(重庆邮电大学 电子信息工程(中美),重庆 400065)

0 引 言

21 世纪,各式各样的技术和设备不停更新换代,微处理器也不例外。对于微处理器的设计,源于其内部的功能选择。对于不同功能的微处理器,其内部的逻辑结构也会产生多种变化。本文将完全集成、测试和演示微处理器的所有部分,完成控制单元的设计,以获取和执行所有指令。测试将在ModelSim 上进行仿真,并通过电路板进行演示。

1 微处理器的构造

利用quartus 软件进行制作微处理器,需要掌握微处理器的构造。微处理器由IR、AC、PC、ALU、寄存器以及集成的中央处理器组成,其中IR、AC、PC、ALU、寄存器比较简单,但是中央处理器的运用比较困难[1]。笔者采用状态转移寄存器,分阶段对中央处理器进行编辑。对中央处理器的内部组成理解,采用opcode 操作数进行仿真操作。opcode 代表ALU 执行的操作,如加减乘除,是计算机最基本的部分。

通过定义和命名其他状态完成表1 内容,以控制指令集中每个指令的执行。

IR 内部包括低位处理器和高位处理器[2]。低位主要负责向随机接入寄存器RAM 输入数据(类似于计算机构造中的键盘输入)与读取;高位主要向ALU 计算器中输入内容和操作数,而操作数决定微处理器的功能。PC 内部构造主要是地址的寻址和栈中数据的存储;AC 类寄存器主要负责数据的处理。

下面使用给定的存储器数据,在执行每条指令时找出存储在每个寄存器中的数据,结果如表2 所示。

2 控制单元修改后的系统Verilog 代码

控制单元修改后的系统Verilog 代码如下。

//Huang junjie 2017215089

module control_unit2(input logic [7:0] opcode,

input logic NFLG, ZFLG, RESET, CLK, output logic[3:0] STATE,

output logic LOAD_AC, output logic LOAD_IRU,output logic LOAD_IRL, output logic LOAD_PC, output logic INCR_PC, output logic FETCH,

output logic STORE_MEM);

typedef enum logic [0:3] {START, PREPU, FETCHU,PREPL, FETCHL, STORE,

表1 相关状态的定义和命名

表2 存储在每个寄存器中的数据情况

executive1, executive2, JUMP} statetype;

statetype state, nextstate;

always_ff@(negedge CLK, posedge RESET) if(RESET)state <= START;

else state <=nextstate;

always_comb case(state)

START: nextstate=PREPU; //first run the prepu to producethe

opcode

IRL)

PREPU: nextstate = FETCHU;

FETCHU:case(opcode) //opcode default 8’h00:nextstate =PREPU;

8’h04: nextstate = executive1; default: nextstate =PREPL;

endcase

PREPL: nextstate=FETCHL; //enter the alu operation FETCHL:case(opcode)

8’h02: nextstate = executive1; //the alu who uses value

8’h06: nextstate =executive1; 8’h08: nextstate=executive1; 8’h0E: nextstate = executive1; 8’h0F:nextstate =executive1;

8’h01: nextstate = executive2; //the alu who uses MDR(from 8’h05: nextstate =executive2;

8’h07: nextstate =executive2;

8’h09: nextstate = executive2; 8’h0A: nextstate= executive2; 8’h0B: nextstate = executive2; 8’h0C:nextstate = executive2; 8’h0D: nextstate =executive2;

8’h03: nextstate = STORE; //Store the address

8’h10: nextstate= JUMP; // choose which jump circle 8’h11: nextstate = (NFLG)?JUMP:PREPU; //if NFLG=1,jump,or

get into prepu

8’h12: nextstate = (~NFLG)?JUMP:PREPU;

8’h13: nextstate = (ZFLG)?JUMP:PREPU;

8’h14: nextstate = (~ZFLG)?JUMP:PREPU; default:nextstate = PREPU;

endcase

executive1: nextstate = PREPU;

executive2: nextstate = executive1; STORE: nextstate =PREPU;

JUMP: nextstate = PREPU; endcase

assign FETCH = (state ==PREPU || state ==PREPL ||state == FETCHU || state == FETCHL);

assign LOAD_IRU = (state == FETCHU); assign LOAD_IRL = (state == FETCHL);

assign INCR_PC = (state == FETCHU || state ==FETCHL); assign LOAD_AC = (state == executive1); //relate to value assign STORE_MEM = (state == STORE);

assign LOAD_PC = (state == JUMP); assign STATE =state;

endmodule

3 模式选择单元的系统Verilog 代码

模式选择单元的系统Verilog 代码如下。

//Huangjunjie this is used for the PC,MAR,MDR module Muxright(input logic A, B,

input logic Mode, output logic Z);

always_comb if(Mode) Z = B; else Z = A;

Endmodule

//Huangjunjie this is used for the LOAD_AC,LOAD_PC,etc module Muxleft(input logic [7:0]A, B,

input logic Mode, output logic [7:0]Z);

always_comb if(Mode) Z = B; else Z = A;

endmodule

4 电路图的仿真框图

电路图的仿真框图,如图1 所示,涉及微处理器的内部完整构造。

图1 电路图的仿真框图

5 仿真波形图

仿真波形可用于检验微处理器的功能是否正确,如图2 所示。

图2 仿真波形图

可以发现,波形与计算的波形相同。就像以clk 的第一个边缘为例,MDR 加载到02,并且复位在状态1下为低电平有效。操作码变为02,PC 添加到2,并进入ALU。

6 结 论

微处理器的主要作用是执行各种操作运算,对于数的操作难易程度主要看微处理器的功能是否强大。微处理器的操作主要看中央处理器的运算操作能力。本文利用软件仿真的微处理器的代码逻辑是否清晰,主要是循环利用PC 和ALU 交替进行操作,而中央处理器主要负责循环递归的进行操作者的命令。quartus软件对于这类微处理器的操作比较方便,拥有最基础的合成软件逻辑门和高阶寄存器。本文提及的system verilog 代码目前只能在quartus 上执行。这类sv 代码逻辑清晰,电路结构十分严谨,对于最后集成电路的焊接、光刻、对照也十分清晰。

猜你喜欢

框图寄存器电路图
“且”的真与假
第7讲 电路图与动态电路专题复习
Lite寄存器模型的设计与实现
捷豹I-PACE纯电动汽车高压蓄电池充电系统(三)
比亚迪E6纯电动汽车系统结构原理(四)
二进制翻译中动静结合的寄存器分配优化方法
2017款凯迪拉克2.8L/3.0L/3.2L/3.6L车型低电平参考电压总线电路图
电路图2017年凯迪拉克XT5
移位寄存器及算术运算应用
算法框图的补全