自定义指令集的CPU设计

前言:

         本人刚刚大学毕业,集成电路专业。初入芯片设计行业,对芯片设计流程有所了解,在此分享一下这方面技巧,希望能够给同样学习中的人带来启发,另外如果有任何意见、建议、批评,指正。

        本设计采用VERILOG 语言作为基础,由于集成电路专业同学大都掌握verilog语言,所以本文不过多介绍,如有需要请查看相关介绍。

        本文采用VCS编译平台,加VERDI组合,完成设计和测试。本人水平有限,文中难免出现错误,欢迎指正!


组成结构:

                 如图 1,CPU组成一般包括运算器,存储器,和控制器。还需要各个外设模块。

                       

                                                                                              图 1 


   运算器:

               运算器需要实现加法,减法等算数功能,还需要与,或,非,移位等逻辑操作功能,所以需要根据其设计目的,首先制作设计功能表。

                如图 2 为运算器模块设计框图,包括如输入输出类型,位宽。                                                      

    

   根据模块图设计真值表

 

加减法器的实现:

      多位加法器由一位加法器多次调用得到,所以只需要设计一个一位加法器即可。

     减法器,5-1,可以表示为5+(-1),所以只需要能表示负数,在调用加法器即可,所以采用补码的方式运算即可。

   如图4 为一个加法器。

  

经过多次调用,得到多位加法器。


根据真值表,确定使用什么功能。在使用加法时直接输入。在使用减法功能时,将被减数取反得到反码,在使用加法器得到商。


逻辑运算:

   逻辑运算就是与或非,直接根据真值表实现即可。


总体设计:

       最后将它们组合在一起,完成运算器的设计

.

最终IO


存储器:

          存储器主要是由4个通用寄存器,加一个状态寄存器组成。这部分比较简单,只需要设计一个寄存器,例化5次即可。


如图 为单个寄存器写法


最终IO 有 5个状态输入,D端输入,两个Q端输入,读写信号等组成

控制器

       控制器需要根据自己定义好的指令来控制运算器和存储器的工作,首先要先制定指令。


根据控制字来控制运算器与存储器,由于控制字过多占用bit太大,所以使用译码器,用8bit来控制。


如上图 全部指令为20bit,通过每个20BIT的数据就可以使CPU动作了。

具体详细设计见附件。

外设:

       GPIO  控制器, CPU通过总线配置GPIO内部的控制寄存器来实现IO口的不同功能。

       其具体配置见附件;

     UART 控制器, CPU通过总线配置内部的控制寄存器来实现不同功能。

        其具体配置见附件;

CPU综合:

                程序需要预先存储到RAM中,所以需要一个可以将程序加载模块。

               BOOT通过UART 将程序写入RAM中,写入完成返回DONE信号,CPU接到DONE信号后开始读取指令。

              下图为BOOT接口

        

    我们现在已经有运算器,存储器,外设,控制器,还有可以下载程序的BOOT,将其组合便可以完成一个简单的CPU设计。

   最终模块图

        

   BOOT与CPU连接图


仿真:

        通过UART向内部写入指令。

        测试使用指令功能:

                                       通过UART将GPIO采集到的数据发送出去。

       具体指令见附件

         仿真图:

          CPU读指令之后执行:

    


总结:

                    这只是一个非常简单的CPU模型。当现在CPU设计思路大体相同,希望能够抛砖引玉,给同学们一些启发。

                   所以设计文件在附件之中,可随时下载。

附件: 

    http://download.csdn.net/detail/qq_29196023/9879493


  • 17
    点赞
  • 26
    收藏
    觉得还不错? 一键收藏
  • 4
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值