• 方案介紹
  • 附件下載
  • 相關(guān)推薦
申請(qǐng)入駐 產(chǎn)業(yè)圖譜

簡(jiǎn)單8位CPU設(shè)計(jì)verilog微處理器

加入交流群
掃碼加入
獲取工程師必備禮包
參與熱點(diǎn)資訊討論

1-231026221PD02.doc

共1個(gè)文件

名稱:8位CPU設(shè)計(jì)(代碼在文末付費(fèi)下載)

軟件:QuartusII

語言:Verilog

代碼功能:

設(shè)計(jì)一個(gè)簡(jiǎn)單的處理器,可以實(shí)現(xiàn)加減法以及簡(jiǎn)單的邏輯運(yùn)算。

設(shè)計(jì)包括程序計(jì)數(shù)器電路,指令存儲(chǔ)器電路,指令譯碼器電路(控制器),運(yùn)算電路,數(shù)據(jù)存儲(chǔ)器(寄存器)電路。

演示視頻:

FPGA代碼Verilog/VHDL代碼資源下載網(wǎng):www.hdlcode.com

部分代碼展示

`timescale?1ns?/?1ps
/////////////////////////////////////////////////////////////////////////////////
//頂層模塊:設(shè)計(jì)包括程序計(jì)數(shù)器電路,指令存儲(chǔ)器電路,指令譯碼器電路(控制器),運(yùn)算電路,數(shù)據(jù)存儲(chǔ)器(寄存器)電路
//指令格式:
//-----------------------
//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];//操作數(shù)1地址
assign?Addr2?=?inst[?7:4];//操作數(shù)2地址
assign?Addr3?=?inst[?3:0];//目的寄存器地址
assign?Write_data?=?aluRes;??
assign?input1?=?Read_data1;
assign?input2?=?Read_data2;
assign?alu_Res=aluRes;
//指令存儲(chǔ)器例化????
im?u_im(
????.Addr(PC),
????.inst(inst)
);??
//指令譯碼器例化
ctr?u_ctr(
????.Opcode(Opcode),
????.aluOp(aluOp),
????.writereg(writereg)
);
//數(shù)據(jù)存儲(chǔ)器例化
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)
);
//程序計(jì)數(shù)器電路例化??
pc?u_pc(
????.clk(clk),
????.rst_n(rst_n),
????.current_pc(PC)
);??
//運(yùn)算電路例化
alu?u_alu(
????.aluOp(aluOp),
????.input1(input1),
????.input2(input2),?
????.aluRes(aluRes),
????.Zero(Zero)
);
??
endmodule

設(shè)計(jì)文檔:

1. 工程文件

2. 程序文件

3. 程序編譯

4. RTL圖

5. Testbench

6. 仿真圖

頂層仿真圖

//微程序內(nèi)容如下:

//2101 ?# INC R1 ? 結(jié)果:R1 =1

//2101 ?# INC R1 ? 結(jié)果:R1 =2

//2101 ?# INC R1 ? 結(jié)果:R1 =3

//2202 ?# INC R2 ? 結(jié)果:R2 =1

//2202 ?# INC R2 ? 結(jié)果:R1 =2

//0123 ?# ADD R1,R2,R3 ? 結(jié)果:R3 =2 + 3 = 5

//1124 ?# SUB R1,R2,R4 ? 結(jié)果:R4 =3 -2 =1

//3303 ?# DEC R3 ?結(jié)果:R3 =5 -1 = 4

//5345 ?# OR R3,R4,R5 ? 結(jié)果:R5 =4 | 1 = 5

運(yùn)算器仿真

控制器仿真

指令存儲(chǔ)器仿真

程序計(jì)數(shù)器仿真

寄存器組仿真

  • 1-231026221PD02.doc
    下載

相關(guān)推薦