【FPGA】基于FPGA的极简CPU设计

本人私人博客:Megalomania,大部分文章会现在博客上传,有不足之处欢迎指正。

这个是我这个学期FPGA的期末大作业,老师说是给两周的时间去写,其实还是在最后一周匆匆赶制出来的 不到DDL不开工。其实吧,要我自己评价是挺不满意的,主要是结构缩水了太多,为了节省代码量,我们甚至连PC指针砍掉,并且将ALU和Control Unit强行拼在了一起,变成了一个单地址指令结构的(严格来说应该也算不上)CPU。可能唯一的优点就是执行快吧…

设计原理


看的出来其实我们设计的这个原理十分简单,一个只剩下指令寄存器的控制单元,不用计算PC指针,还和运算单元结合在了一起,连在顶层文件中的连接都省了。由于是在家里上课,也没有上板之类的,只要ModuleSim能跑就行,所以把外围内存都删了(其实原理也挺简单的),直接看输入输出波形就完事了。但是内部的存储单元还是得要,不然有许多操作的中间值没地方放,自己写一个就行了,也不要什么IP Core之类的。

指令列表

输入信号为16位数 别问,问就是强迫症,高8位为指令码,低8位为操作数。
总共就九个指令,全部围绕寄存器A进行:

  1. in_ram:将A中的数写入RAM,地址为输入数据低8位所指的空间
  2. load_num:从外部输入数据到A
  3. out_ram:将RAM中的数写入A,地址为输入数据低8位所指的空间
  4. clr:清空A
  5. inc:A中的数自加1
  6. dec:A中的数自减1
  7. stay:等待指令
  8. add:将A中的数与输入数据低8位相加
  9. min:将A中的数与输入数据低8位相减

代码设计

工程总共有4个文件:输入模块,运算控制模块,RAM模块以及顶层模块

输入模块(IDEC.v)

输入模块负责将输入的16位二进制数分割为2个8位二进制数,高8位为指令,低8位为操作数或者RAM地址。


                
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值