• 方案介绍
  • 附件下载
  • 相关推荐
申请入驻 产业图谱

简单8位CPU设计verilog微处理器

05/07 13:34
2092
加入交流群
扫码加入
获取工程师必备礼包
参与热点资讯讨论

1-231026221PD02.doc

共1个文件

名称:8位CPU设计(代码在文末付费下载)

软件:QuartusII

语言:Verilog

代码功能:

设计一个简单的处理器,可以实现加减法以及简单的逻辑运算。

设计包括程序计数器电路,指令存储器电路,指令译码器电路(控制器),运算电路数据存储器(寄存器)电路。

演示视频:

FPGA代码Verilog/VHDL代码资源下载网:www.hdlcode.com

部分代码展示

`timescale?1ns?/?1ps
/////////////////////////////////////////////////////////////////////////////////
//顶层模块:设计包括程序计数器电路,指令存储器电路,指令译码器电路(控制器),运算电路,数据存储器(寄存器)电路
//指令格式:
//-----------------------
//opcode?|?rs?|?rt?|?rd?|
//-----------------------
//15-12???11-8??7-4??3-0
//
//操作方式如下:
//ADD?R1,R2,R3??
//??=>?R3?=?R1?+?R2;
//SUB与ADD一致
//
//INC:
//INC?R1,0,R1
//?=>?R1?=?R1?+1;
//
//DEC,R1,0,R1
//?=>?R1?=?R1?-1;
module?cpu(
????input?wire?clk,
????input?wire?rst_n,?
?output?[15:0]?alu_Res?
????);
wire?[15:0]?inst;
wire?[15:0]?PC;
wire?[3:0]?Opcode;
wire?[3:0]?aluOp;
wire?[15:0]?imm;
wire?[3:0]?Addr1,Addr2,Addr3;
wire?[15:0]?Write_data;
wire?[15:0]?Read_data1,Read_data2;
wire?[15:0]?aluRes;
wire?[15:0]?input1,input2;
wire?writereg;
assign?Opcode?=?inst[15:12];??//操作码为指令的高四位
assign?Addr1?=?inst[11:8];//操作数1地址
assign?Addr2?=?inst[?7:4];//操作数2地址
assign?Addr3?=?inst[?3:0];//目的寄存器地址
assign?Write_data?=?aluRes;??
assign?input1?=?Read_data1;
assign?input2?=?Read_data2;
assign?alu_Res=aluRes;
//指令存储器例化????
im?u_im(
????.Addr(PC),
????.inst(inst)
);??
//指令译码器例化
ctr?u_ctr(
????.Opcode(Opcode),
????.aluOp(aluOp),
????.writereg(writereg)
);
//数据存储器例化
rf?u_rf(
????.clk(clk),
????.rst_n(rst_n),
????.Addr1(Addr1),
????.Addr2(Addr2),
????.Addr3(Addr3),
????.Write_data(Write_data),
????.writereg(writereg),
????.Read_data1(Read_data1),
????.Read_data2(Read_data2)
);
//程序计数器电路例化??
pc?u_pc(
????.clk(clk),
????.rst_n(rst_n),
????.current_pc(PC)
);??
//运算电路例化
alu?u_alu(
????.aluOp(aluOp),
????.input1(input1),
????.input2(input2),?
????.aluRes(aluRes),
????.Zero(Zero)
);
??
endmodule

设计文档:

1. 工程文件

2. 程序文件

3. 程序编译

4. RTL图

5. Testbench

6. 仿真图

顶层仿真图

//微程序内容如下:

//2101 ?# INC R1 ? 结果:R1 =1

//2101 ?# INC R1 ? 结果:R1 =2

//2101 ?# INC R1 ? 结果:R1 =3

//2202 ?# INC R2 ? 结果:R2 =1

//2202 ?# INC R2 ? 结果:R1 =2

//0123 ?# ADD R1,R2,R3 ? 结果:R3 =2 + 3 = 5

//1124 ?# SUB R1,R2,R4 ? 结果:R4 =3 -2 =1

//3303 ?# DEC R3 ?结果:R3 =5 -1 = 4

//5345 ?# OR R3,R4,R5 ? 结果:R5 =4 | 1 = 5

运算器仿真

控制器仿真

指令存储器仿真

程序计数器仿真

寄存器组仿真

  • 1-231026221PD02.doc
    下载

相关推荐