关键词不能为空

当前您在: 主页 > 英语 >

课程设计cpu

作者:高考题库网
来源:https://www.bjmy2z.cn/gaokao
2021-02-01 19:13
tags:

-

2021年2月1日发(作者:ox什么意思)


实用文案




哈尔滨理工大学



软件学院




课程设计报告










片上计算机系统






CPU


模型机设计







集成


14-2








集成电路设计与集成系统







宋鸿飞






1414020210



指导教师



崔林海






























2016




07




8






文案大全



实用文案





引:



1


.课 程设计的目的及要求………………………………………


3



2


.处理器的设计思想和设计内容………………………………


3



3


.设计处理器 的结构和实现方法………………………………


3



4


.模型机的指令系统……………………………………………


4



5


.处理器的状态跳转操 作过程…………………………………


4



6.


CPU



Verilog


代码……………………………………………


7



7.


模型机在


Quartus


II


环境下的应用…………………………


16



8.


仿真波形………………………………………………………


16



9.


课程设计的总结………………………………………………


18



























文案大全



实用文案



一.



课程设计的目:




目的:了解


Quartus


II


软件的应用,学习


Quartus


II


环境下设计


CPU


的基


本过程;掌握


CPU


设计 代码的含义以及


CPU


的工作原理;了解


CPU


与内存


RAM


间的连接数据的 传输过程;学习在


Quartus II


环境下建立模型机的具 体过程。


融会贯通本课程各章节的内容,


通过知识的综合运用,


加深对计算机系统各模块


的工作原理及相互联系的认识。


学习设计和调试计算机的基本步骤和方法,


提高


使用软件仿真工具和集成电路的基本技能。


培养科学研究的独立工作能力,

< p>
取得


工程设计与组装调试的实践和经验。






二.



处理器的设计思想和设计内容:



我 设计的是


16



cpu



5


位的操作码,


18


条指令,其中包含了


4


种寻址方


式。内存容量为


2k



< /p>


这个


CPU


是参考学姐的程序,在学姐的 程序的基础上增加了一些指令得到


的。







三.



设计处理器的结构和实现方法:



(指令格式)



格式

< br>1


:寄存器寻址方式



15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0


OP


Rx


Ry



空白



格式


2


:立即数寻址方式



15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0


OP


I



空白






格式


3


:无 操作数寻址方式



15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0


OP







空白



格式


4


:直接寻址方式



15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0


OP



Addr


内存(


2



11


次方 )



文案大全



实用文案





四.



模型机的指令系统



CPU


的指令集:



操作码


OP


指令



IR(15..1


格式



2)


00000


00001


00010


00011


00100


00101


00110


00111


01000


01001


01010


01011


01100


01101


01110


01111


10000


10001

















Idle


Load


Data


Move


Rx Ry


Add


Rx Ry



Sub


Rx Ry



AND


Rx Ry



OR


Rx Ry



XOR


Rx Ry



NAND


Rx Ry



NOT


Rx



SHR


Rx Ry


SHL Rx Ry



SWAP Rx Ry



JMP


Addr


JZ Addr



READ


WRITE


STOP












3


2


1


1


1


1


1


1


1


1


1


1


1


4


4


4


4


3


无操作


PC=PC+1


R0


?


I


立即数操作



Rx


?


(Ry) PC=PC+1


Rx


?


(Rx)+(Ry) PC=PC+1


Rx


?


(Rx)-(Ry) PC=PC+1


Rx


?


(Rx)


AND


(Ry) PC=PC+1


Rx


?


(Rx)


OR


(Ry) PC=PC+1


Rx


?


(Rx)


XOR


(Ry)


PC=PC+1


Rx


?


(Rx)N

< br>AND


(Ry) PC=PC+1


Rx


?


NOT (Rx)



PC=PC+1


逻辑循环右移


PC=PC+1



逻辑循环左移


PC=PC+1


A


?


(Ry) Ry


?


(Rx) Rx


?


(A) PC=PC+1


PC


?


Addr PC=PC+1


If (R0)=0 then PC


?


Addr


else PC=PC+1


R0


?


(Addr) PC=PC+1


Addr


?


(R0) PC=PC+1


无操作


PC


保持不变






五.



处理器的状态跳转操作过程:




文案大全



实用文案




(



)


、模型机每一状态下的操作及状 态跳转






执行操作



次态与读下一条指令的有关的操作





St_0


取指令



St_1

< br>IR(15..0)


?


M_data_in



15..0




Write-Read


?


< p>
0



PC=PC+1


St_1


IF


OP=Load


THEN


MAR


?


PC



R0


?


”< /p>




IF


(OP= Stop)


THEN



||IR(10..7)


St_1


IF



OP=Move




THEN



Rx


ELSE


St_2


END IF


?


(Ry)



IF



OP=



Shr



THEN




Rx


?


(Ry)




逻辑循环右移



IF



OP=



Shl



THEN





Rx


?


(Ry)




逻辑循环左移



IF


OP=



Add


THEN


A


?


(Ry)


IF


OP=



Sub


THEN


A


?


(Ry)


IF OP=NAND THEN


A


?


(Ry)



IF OP=OR THEN


A


?


(Ry)



IF


OP= AND


THEN


A


?


(Ry)


IF


OP=NOT


THEN


A


?


(Ry)


IF


OP=



XOR


THEN


A


?


(Ry)


IF


OP=



Swap


THEN


A


?


(Ry)


IF


OP=Stop


THEN NULL



IF


OP=Idle


THEN NULL



IF


OP=Jmp


THEN NULL



IF


OP=Jz


THEN NULL



IF


OP=Read


THEN NULL



IF


OP=Write


THEN NULL



IF


OP=


Load


OR



OP=Move



OR



St_0


OP=Shr


OR


OP=Shl


OR


OP=Idle



Write-Read


?


< p>
0




THEN NULL



IF



OP=


Add




THEN



Rx


?


(Rx)+A


IF



OP=


Sub




THEN



Rx


?


(Rx)-A


IF



OP=



AND



THEN



Rx

?


(Rx)


AND


A


IF


OP= NOT


THEN


Rx


?


(Rx)



St_2


文案大全



实用文案



St_3


St_4



St_5


St_6


NOT


A


IF



OP=



N


AND



THEN



Rx

?


(Rx)N


AND


A

< p>


IF


OP=



OR


THEN


Rx


?


(Rx)


OR


A



IF


OP= XOR


THEN


Rx


?


(Rx)



XOR


A


IF


OP= Swap


THEN


Ry


?


(Rx)


St_3


IF (


OP= Jmp


OR


OP=Jz


) THEN


Write-Read


?


< p>
0




NULL


IF(


OP=Read


OR


OP=Write


)


THEN



NULL


IF


OP=


Swap


THEN



Ry


?


(Rx)


St_0


Write-Read


?< /p>



0





IF


OPE=


Read


OR



OPE=


Write


OR


St_4


OPE=Jump


OR


OPE=Jz)


THEN


PC:=PC+1;


IR


?


Data_in



Write-Read< /p>


?



0




IF


OP= Jz


THEN


St_5


IF


(R0)=0


THEN



Write-Read


?


< p>
0




(PC


?


IR(10..0)


MAR


?


IR(10..0))


ELSE


MAR


?


PC



IF


OP= Jmp


THEN


(PC


?


IR(10..0)


MAR


?


IR(10..0))


IF



OP=



Read



THEN



MAR


?


IR(10..0)


IF


OP=



Write


THEN



MAR


?


IR(10..0) MDA


?


R0


IF

< br>(OPE=Jump


)OR(


OPE=J


z)



St_0;


MAR


?


PC;


Write-Read


?



0




IF


(OPE=Read)

St_6;


MAR


?


PC;


Write-Read


?


< p>
0





St_6;


MAR


?


PC;


Write-Read


?


< p>
0




IF OP=Read


St_0


THEN



R0=M_data_in;


Write-Read


?



1




6. CPU


的代码



module cpu(reset, clock, Write_Read, M_address, M_data_in, M_data_out,


overflow);


input reset;


文案大全



实用文案



input clock;


output Write_Read;


output [10:0] M_address;


input [15:0] M_data_in;


output [15:0] M_data_out;


output overflow;


reg overflow;



reg [15:0] IR;


reg [15:0] MDR;


reg [10:0] MAR;


reg [2:0] status;



parameter [4:0] Idle=5'd0,


load=5'd1,


move=5'd2,


addp=5'd3,


subp=5'd4,


andp=5'd5,


orp=5'd6,


xorp=5'd7,


nandp=5'd8,


notp=5'd9,


shrp=5'd10,


shlp=5'd11,


swap=5'd12,


jmp=5'd13,


jz=5'd14,


read=5'd15,


write=5'd16,


stop=5'd17;





always @(negedge reset or negedge clock )


begin: status_change


if (reset == 1'b0)


status <= 0;


else


case (status)


0 :


status <= 1;


1 :


if (IR[15:11] == stop)


文案大全



实用文案



status <= 1;


else


status <= 2;


2 :


case (IR[15:11])


swap, jmp, jz, read, write,nandp,notp:


status <= 3;


default :


status <= 0;


endcase


3 :


if (IR[15:11] == swap)


status <= 0;


else


status <= 4;


4 :


status <= 5;


5 :


case (IR[15:11])


read, write :


status <= 6;


default :


status <= 0;


endcase


6 :


status<=0;


default :


status <= 0;


endcase



end




always @(negedge reset or negedge clock)


begin: seq


reg [10:0] PC;


reg [15:0] R0;


reg [15:0] R1;


reg [15:0] R2;


reg [15:0] R3;


reg [15:0] A;


reg [16:0] temp;


if (reset == 1'b0)


begin


文案大全



实用文案



IR <= {16{1'b0}};


PC = {11{1'b0}};


R0 = {16{1'b0}};


R1 = {16{1'b0}};


R2 = {16{1'b0}};


R3 = {16{1'b0}};


A = {16{1'b0}};


MAR <= {11{1'b0}};


MDR <= {16{1'b0}};


end


else


begin


overflow <= 1'b0;


case (status)


0 :


begin


IR <= M_data_in


PC = PC + 1'b1;


end


1 :


begin


MAR <= PC;


case (IR[15:11])


load :


R0 = {{12{1'b0}}, IR[10:7]};


move :


case (IR[10:7])


4'b0001 :


R0 = R1;


4'b0010 :


R0 = R2;


4'b0011 :


R0 = R3;


4'b0100 :


R1 = R0;


4'b0110 :


R1 = R2;


4'b0111 :


R1 = R3;


4'b1000 :


R2 = R0;


4'b1001 :


R2 = R1;


4'b1011 :


文案大全


-


-


-


-


-


-


-


-



本文更新与2021-02-01 19:13,由作者提供,不代表本网站立场,转载请注明出处:https://www.bjmy2z.cn/gaokao/594725.html

课程设计cpu的相关文章