logisim设计CPU
下载: logisim_simple_cpu
ISA设计
设计二进制代码为20位
- operation code :[0:3]
- 设置三个寄存器操作数,两个操作数将结果存储在一个输入寄存器中。
- 每个寄存器占4位,即2^4=16 个寄存器
name | op[0:3] | [4:7] | [8:11] | [12:15] | [16:19] | description |
---|---|---|---|---|---|---|
add | 0000 | rs | rt | rd | 0000 | Arithmetic addition(rs = rt+rd) |
incre | 0001 | rs | rt | 0000 | 0000 | increment(rs = rt+1) |
decre | 0010 | rs | rt | 0000 | 0000 | decrement(rs = rt-1) |
cmp | 0011 | rs | rt | rd | 0000 | comparison(with 3 output:equals in rs[0], less than in rs[1], greater than in rs[2] ) |
not | 0100 | rs | rt | 0000 | 0000 | logic bitwise not(rs = not rt) |
and | 0101 | rs | rt | rd | 0000 | rs = rt and rd |
or | 0110 | rs | rt | rd | 0000 | rs = rt or rd |
rls(right logic shift) | 0111 | rs | rt | rd | 0000 | rs = rt >> rd |
lls(left logic shift) | 1000 | rs | rt | rd | 0000 | rs = rt << rd |
lw | 1001 | rs | rt(base) | offset | offset | rs = mem[rt+offset] |
sw | 1010 | rs | rt(base) | offset | offset | mem[rt+offset] = rs |
addi | 1011 | rs | rt | imm | imm | rs = rt+ imm |
andi | 1100 | rs | rt | imm | imm | rs = rt and imm |
ori | 1101 | rs | rt | imm | imm | rs = rt or imm |
JMP | 1110 | instr_index[0:3] | instr_index[4:7] | instr_index[8:11] | instr_index[12:15] | |
CJMP | 1111 | offset[0:3] | rt | rd | offset[4:7] | cjmp rs,rd,pc;offset; rt == rd: j (offset) else:continue |
CPU设计
设计参考mips的单周期CPU设计
- 分为 取指、译码、控制、regfile寄存器堆、dataram几个模块。
- 输入clk信号(暂时是输入端口,方便手动调试,未用clock模块)
- 输入复位信号
- 输出指令、pc、写回寄存器堆数据、branch的pc、jump的pc、instr的译码结果、regfile读出结果
调试
如下设计了一组能够测试大部分设计的代码。
instruction ram中装入的测试指令如下,依次:行号 | 汇编代码 | 二进制机器码 | 十六进制机器码
0 : addi $s1,$0,5 00000101000000011011 501b
1 : addi $s2,$0,7 00000111000000101011 702b
2 : or $s3,$s2,$s1 00000001001000110110 1236
3 : cjmp $s3,$s0,7 01110000001100001111 7030f
4 : and $s4,$s0,$s2 00000010000001000101 2045
5 : cjmp $s4,$s0,7 01110000010000001111 7020f
6 : add $s5,$s1,$s2 00000010000101010101 2155
7 : jmp 9 10010000000000001110 9000e
8 : add $s6,$s1,$s2 00000010000101100000 2160
9 : add $s7,$s1,$s2 00000010000101110000 2170
10: add $s8,$s1,$s2 00000010000110000000 2180
调试步骤:
- 将instr文件载入instr mem中
- 选择logisim的手掌方式
- 点击复位
- 点击clk输入模块模拟时钟上升沿触发cpu
- 查看寄存器的输入输出是否正确,写回数据是否正确,跳转pc是否正确
缺陷(埋坑)
- 在大小端的设计上,在logisim中从ram中读取出来的是大端方式,故在将汇编指令翻译为机器码时采用相反设计时的从低到高,将op放在[16:19]位置,然后左侧是rs rt rd的顺序,如此在logisim中读出来op会在[0:3]位。
参考引用:
https://vlab.ustc.edu.cn/guide/doc_logisim.html
http://www.doc88.com/p-1466403426738.html
https://blog.csdn.net/Hi_KER/article/details/120928866
https://blog.csdn.net/Hi_KER/article/details/121044637
https://blog.csdn.net/sinat_42483341/article/details/88849892?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522164051235016780269898138%2522%252C%2522scm%2522%253A%252220140713.130102334…%2522%257D&request_id=164051235016780269898138&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2allsobaiduend~default-3-88849892.first_rank_v2_pc_rank_v29&utm_term=LogiSim+CPU&spm=1018.2226.3001.4187
logisim设计CPU相关推荐
- 使用logisim设计简易CPU
声明: 设计图纸来自以下链接的博客,这篇文章是按照自己的想法重构了一下设计思路,写了一些自己的理解. https://www.cnblogs.com/kingduan/p/4054484.html#_ ...
- 计算机组成原理Logisim单总线CPU
计算机组成原理 Logisim单总线CPU 指令译码器设计 硬布线控制器 单总线CPU(3级时序) 硬布线控制器组合逻辑单元 时序发生器输出函数(定长指令周期) 时序发生器FSM设计(定长指令周期)
- RISC-V学习资料:《手把手教你设计CPU——RISC-V处理器》
<手把手教你设计CPU--RISC-V处理器> 单击此处样章试读 作者:胡振波 出版社: 人民邮电出版社 ISBN:9787115480521 版次:1 商品编码:12360850 包装: ...
- 这本读者期待的芯片书《手把手教你设计CPU——RISC-V处理器》终于出版!
点击关注异步图书,置顶公众号 每天与你分享IT好书 技术干货 职场知识 点击图片购书 参与文末话题讨论,每日赠送异步图书 --异步小编 在摩尔定律减缓的今天,一味比拼硬件性能的技术竞赛变得越发 ...
- 造个计算机--2、设计CPU
话接上文: 造个计算机--1.设计运算器 还从老冯的这张结构图说起来,上面的文章里面说完了图里面运算器的实现.万里长征迈出了第一步(理论上的,实际要做的时候,还有更多的细节问题,想想都汗啊..), 接 ...
- 我的中国“芯”,手把手教你设计CPU
点击关注异步图书,置顶公众号 每天与你分享 IT好书 技术干货 职场知识 参与文末话题讨论,每日赠送异步图书. --异步小编 永恒的热点--CPU 灯,等灯等灯-- -- Intel 如果要 ...
- 手把手教你设计CPU RISC-V处理器设计
很好的资料,手把手教你设计CPU RISC-V处理器篇,分享给大家 https://download.csdn.net/download/sfp_801/87577063 链接:https://pan ...
- 计算机系统 cpu课程,片上计算机系统课程设计CPU模型机设计.docx
片上计算机系统课程设计CPU模型机设计.docx 哈尔滨理工大学 软件学院 课程设计报告 课 题 班 专 学 学 程片上计算机系统 目CPU模型机设计 级集成14-2班 业集成电路设计与集成系统 生 ...
- 硬件描述语言要用计算机吗,计算机组成原理用硬件描述语言设计CPU.docx
计算机组成原理用硬件描述语言设计CPU 计算机科学与工程学院课程设计报告题目全称: 课程名称: 指导老师: 职称: 序号学生姓名学号班号成绩12345678910(注:学生姓名填写按学生对该课程设计的 ...
- FPGA设计CPU书籍
一直以来CPU内部是绝大多数IT工程师难以触及的领域.纵使学习过计算机架构相关课程,自己动手实现CPU也始终遥不可及,因为这涉及计算机系统的最底层--芯片设计. 而近年来FPGA芯片产品的发展 ...
最新文章
- MVC之前的那点事儿系列(2):HttpRuntime详解分析(上)
- windows下部署MySQL 8.0.11
- host 和TNS设置
- Applet、Scriptlet与Servlet
- 数据分析学习笔记4-----处理缺失数据
- 诺基亚手机的安全保护。--如何使你的手机丢失,被盗后依然安全。
- mysql status lock_MySQL性能突发事件问题排查技巧
- docker build 变量_Docker从入门到掉坑(二):基于Docker构建SpringBoot微服务
- 《机器学习实战》完整读书笔记
- php中关系运算符的优先级,PHP 运算符优先级
- win11 dev cpp程序关闭时弹出cmd错误0xc0000142的解决方法
- linux如何生成tgz文件,linux – 压缩文件夹以创建tgz文件
- 我为什么从外包公司离职了?
- 纯css实现三角原理,兼容IE
- DDR VTT供电解决方案
- matlab 中画箭头
- expdpimpdp使用remap
- Windows 7 64 位操作系统安装 Ubuntu 17.10
- Linux中断——request_irq
- iOS第三方支付(支付宝SDK)
热门文章
- 竞价推广的流程有哪些?
- 多商户商城小程序源码有何优势?
- 2021年下半年信息安全工程师上午真题及答案解析
- arduino 步进电机驱动库_Arduino基础入门篇27—步进电机驱动库的使用
- C语言输出有趣的图形,c语言经典游戏程序源代码大全
- 基于摄像头循迹的电子设计竞赛论文
- OSX malware and exploit collection (~100 files) + links and resources for OSX malware analysis
- 锐起无盘4.2服务器设置,锐起无盘4.5免费版
- windowns定时关机命令
- Java学习路线图,全套Java基础视频教程