CPU实现

news/2024/12/25 23:03:34/文章来源:https://www.cnblogs.com/suehoo/p/18628871

CPU实现

image-20241224224503202

CPU的数据通路

image-20241224224543254


module CPU(input[15:0]  inM,         // M value input  (M = contents of RAM[A])instruction, // Instruction for executioninput clock, reset,       // Signals whether to re-start the current// program (reset==1) or continue executing// the current program (reset==0).output[15:0] outM,        // M value outputoutput       writeM,      // Write to M? output[14:0] addressM,    // Address in data memory (of M)pc          // address of next instruction);wire[15:0] inAR, outAR, outALU, pcOut, outAM, outDR;// your code herewire isA,isC,isWriteDR,isWriteAR,zx,nx,zy,ny,f,no,zr,ng;wire isLT,isEq,isGt,notng,notzr,isOutGt,isGtJump,orjump,jump;// if (instruction[15]==1) set isC=1, else set isA=1Not g1(instruction[15],isA);Not g2(isA,isC);// instruction[5:3] is dest domin//instruction[5]=1 set AR=outALU,instruction[4]=1 set DR=outALU,instruction[3]=1 set M[A]=outALU// if (isC&instruction[4]) set isWriteDR=1,outDR=outALUAnd g3(isC,instruction[4],isWriteDR);Register D(outALU,clock,isWriteDR,outDR);// if (isA) set inAR=instruction, or set inAR=outALUMux16 g4(outALU,instruction,isA,inAR);// if (isA|instruction[5]) set isWriteAR=1Or g5(isA,instruction[5],isWriteAR);Register A(inAR,clock,isWriteAR,outAR);// check use A or M from instruction[12](a bit)Mux16 g6(outAR,inM,instruction[12],outAM);// set alu input from instruction[6]/7/8/9/10/11,outDR,outAMAnd g7(isC,instruction[11],zx);And g24(isC,instruction[10],nx);And g25(isC,instruction[9],zy);And g26(isC,instruction[8],ny);And g27(isC,instruction[7],f);And g28(isC,instruction[6],no);ALU alu(outDR,outAM,zx,nx,zy,ny,f,no,outALU,zr,ng);// if (isC&instruction[3]) set writeM=1, then set outM=outALU//assign addressM = outAR[14:0];And16 g8(outALU,outALU,outM);And15 g9(outAR[14:0],outAR[14:0],addressM);And g10(isC,instruction[3],writeM);// isLT=instruction[2], if(isLT&&ng) set isLtJump=1And g11(isC,instruction[2],isLT);And g13(isLT,ng,isLtJump);// isEQ=instruction[1], if(isEQ&&zr) set isEqJump=1And g12(isC,instruction[1],isEq);And g14(isEq,zr,isEqJump);// if out>0,set isOutGt=1And g15(isC,instruction[0],isGt);Not g16(ng,notng);Not g17(zr,notzr);And g18(notng,notzr,isOutGt);And g19(isOutGt,isGt,isGtJump);// isGT=instruction[0], if(isGT&&isOutGt) set isGtJump=1And g23(isOutGt,isGt,isGtJump);// if(isLtJump|isEqJump|isGtJump) set jump=1Or g20(isLtJump,isEqJump,orjump);Or g21(orjump,isGtJump,jump);// set pcOut according to jump,reset,outAR. use PC modulePC pcm(outAR,!clock,jump,1'b1,reset,pcOut);//assign pc = pcOut[14:0];And15 g22(pcOut[14:0],pcOut[14:0],pc);endmodule

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/858394.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

MySQL 常用的存储引擎-MySQL 常用的存储引擎.png

本文来自博客园,作者:sevenShaw,转载请注明原文链接:https://www.cnblogs.com/sevenShaw/p/18628870

emby/jellyfin笔记记录

docker pull lovechen/embyserver docker run --name emby -d --net host --env UID=0 --env GID=0 --env GIDLIST=0 --device=/dev/dri:/dev/dri lovechen/embyserver:latest /path/to/media 是我们的媒体文件所在的路径,将被映射到容器中的 /media 目录。/path/to/config 是…

博客园cnblog美化

起因博客园这个丑丑的默认样式实在看不下去,换了一个主题,但是发现这个主题用的人还是太多了说实话要是给主页的样子其实也还不错啊(广告就不要了谢谢)改变现状想来想去,还是得美化一下,但是自己没有这个精力去美化,怎么办呢 自然还是去找别人的模板,先好看起来再说,以…

AI车辆违停监测识别摄像机

AI车辆违停监测识别摄像机是一种利用人工智能技术的智能监控设备,被广泛应用于城市道路、停车场等地方的车辆管理和交通监测。这种摄像机能够通过高清摄像头捕捉车辆违停情况,利用AI算法进行实时识别和监测,有效维护交通秩序和公共安全。AI车辆违停监测识别摄像机是一种利用…

AI吸烟监测识别摄像机

AI吸烟监测识别摄像机是一种基于人工智能技术的智能监控设备,可用于监测公共场所或工作场所内的吸烟行为。这种摄像机通过高清摄像头实时捕捉场景图像,利用AI算法对吸烟行为进行识别和监测,有助于维持场所内的秩序,减少危害他人健康的不文明行为。AI吸烟监测识别摄像机是一…

服务器IP地址调整的原因、步骤及影响是什么?

服务器IP地址调整是常见的维护操作之一,通常由服务商出于网络优化、硬件升级或安全考虑而发起。了解这一过程的原因、具体步骤及其可能带来的影响,可以帮助您更好地规划业务迁移,确保服务连续性。以下是详细的说明:调整原因:机房网络优化:随着互联网流量的增长和技术的进…

周界入侵识别摄像机

周界入侵识别摄像机是一种具有智能识别功能的视频监控设备,主要应用于对围栏、墙壁等周界进行监测,及时发现和识别潜在的入侵行为,提供实时监控和报警服务。该设备结合了视频监控技术和人工智能算法,能够有效防范安全风险,提升监控效率,保障周界的安全。周界入侵识别摄像…

vue-固定某列使用fixed失效问题

1.如下图,有时候前端需要固定最左边 或 最右边的 某1列 或好几列,但是 页面会出现无法对齐的现象2. 博主问题场景原因分析:前端列表一行里会出现高度不一致的情况,比如可能遇到某一列定义windth不够 而换行显示 会导致 表格的 高度发生变化 从而导致 无法对齐的现象 3.解决方…

国产AI使用尝试

豆包AI使用体验不得不说现在AI的能力也是越来越离谱了。 上一篇博客 的代码是我写的,但是懒得写文章了,让AI替我生成一篇,这个质量我没话说。 完全可以以假乱真了,但是具体的细节、上下文链接、逻辑问题,还有待检查。 我只修改了可能侵犯版权的部分,具体的文章可以直接跳…

轻松玩转 JMeter 测试计划组件

轻松玩转 JMeter 测试计划组件 宝子们,今天咱就来唠唠 JMeter 里那个超重要的测试计划组件,它可是整个性能测试的 “指挥官”,把各种测试元素安排得明明白白。一、测试计划组件是个啥?有啥用? 这个组件就像是一场大戏的总策划,它决定了整个测试的范围和目标。啥意思呢?就…