Chisel(Constructing Hardware In a Scala Embedded Language)是UC Berkeley开发的一种开源硬件构造语言。
站长xddcore有话说:在我大二的时候,因为项目需要,接触了Chisel。在体验过后,我被它深深的吸引了。我幻想着它十年后的样子,充满希望。于是创建了这个博客,让更多人的了解Chisel,学习Chisel。

【长期更新】FPGA学习之路(七)之基于32位MIPS架构的5级流水线CPU搭建

内容纲要
Reading Time: 2 minutes

xSOC简介

基于RISC架构的32位SOC,xdd_core于2020.8.14正式开始捏。
平台:Intel Cyclone IV EP4CE15F23C8N

目标汇总及进度

  • [x] 总线部分
  • [x] CPU部分
  • [x] 存储部分
  • [ ] 外设部分
  • [ ] SOC顶层
  • [ ] 简易汇编编译器搭建
  • [ ] 点亮LED灯
  • [ ] 串口打印“Hello,World!”

特性:

  1. 五级流水线
  2. 涵盖7大类的28条指令作为指令集:逻辑运算指令,算术运算指令,移位指令,分支指令,特殊指令,特权指令。
  3. 32MB SDRAM
  4. 更多特性,等待后面慢慢捏

系统蓝图

├── chip_top // 顶层测试
——├── clk_gen //时钟模块
——├── chip // SOC顶层
——├── cpu // cpu顶层
——├── ROM // ROM顶层
——├── RAM // RAM顶层
——├── timer // 定时器顶层
——├── uart // uart顶层
——├── gpio // gpio顶层
——├── bus // 总线顶层

时间节点规划

gantt
    title xSOC开发流程(※佛系开发,多陪npy)
    section 总线
        总线仲裁器     :a1, 2020-08-14, 10d
        总线主控多路复用器     : 13d
        总线从属多路复用器      : 13d
        地址解码器      : 10d
    section 存储
        SDRAM      :2020-08-14  , 10d
        SPI FLASH      : 10d
    section CPU
        IF     :2020-08-14  , 10d
        ID      : 10d
        EX      : 10d
        MEM      : 10d
        WB      : 10d
        CPU控制单元      : 10d
        通用寄存器(Rx)      : 10d
        SPM暂时存储器      : 10d
    section 外设
        GPIO     :2020-08-14  , 10d
        timer      : 10d
        PLL      : 10d
        uart      : 10d

总线部分

如下为xSOC的总线框图,简单说一下工作逻辑。
1.x号主控向BUS_Arbiter申请使用总线,Arbiter采用轮询仲裁机制,将总线权限释放给对应的x号主控。
2.x号主控得到BUSArbiter的授权后,开始访问总线。此时,总线主控输出地址信号(addr),并发出地址选通信号(as)。从属设备的片选信号(cs)由地址解码器根据地址信号(addr)生成。
3(主控读取).x号主控输入读写信号(rw)为R读取,并发出地址选通信号(as_),并保持clk一个周期。(地址信号在总线访问过程中,需要一直保持)
4.(主控读取)x号从属收到3.(主控读取)里面的主控动作后,发出输出就绪信号(rdy_),并同时发送对应地址里的数据。主控收到数据后停止输出地址信号,停止总线申请信号,释放权限给仲裁器


3(主控写入).x号主控输入读写信号(rw)为W写入,并发出地址选通信号(as_),并通过数据线发出需要写入的数据(地址信号在总线访问过程中,需要一直保持)
4.(主控写入)x号从属收到3.里面的主控写入动作后,将数据线上的数据写入到对应地址内部。等待数据写入完成后,从属输出就绪信号(rdy_)。主控收到就绪信号后,停止输出地址信号,停止总线申请信号,释放权限给仲裁器
在这里插入图片描述

总线顶层全貌(RTL视图)

在这里插入图片描述

总线仲裁器(Bus_Arbiter)

RTL框图

在这里插入图片描述

轮询法实现的仲裁逻辑

在这里插入图片描述

总线主控多路复用器(Bus_Master_Mux)

RTL视图

在这里插入图片描述

总线从属多路复用器(Bus_Slave_Mux)

RTL视图

在这里插入图片描述

地址解码器(Bus_Addr_Dec)

RTL视图

在这里插入图片描述

存储部分

ROM

ROM直接用了FPGA内部的BRAM,然后用自带的ROM IP核实现ROM。在初始化IP Core的时候,出现点问题,就是需要生成.mif来初始化值。。。然后我写了个自动生成.mif的软件(博客链接:https://blog.csdn.net/qq_36229876/article/details/108034191),通过这个软件可以快速得到.mif文件。

RTL视图

在这里插入图片描述

五级流水线CPU

在这里插入图片描述
CPU核RTL视图

Share

xddcore

xddcore www.github.com/xddcore

You may also like...

发表回复

您的电子邮箱地址不会被公开。