蜂鸟E203 硬件学习(一)

本文介绍了蜂鸟E203硬件学习的第一部分,包括coding style的最佳实践,如使用标准DFF模块例化寄存器、避免if-else和case,以及模块层次划分,如e203_cpu_top模块的组成和SRAM部分。内容还涉及流水线的设计,如流水线与状态机的trade off以及反压问题的解决方案,如乒乓缓存和前向旁路缓存的应用。
摘要由CSDN通过智能技术生成

(一)蜂鸟E203的coding style
(1)对于寄存器避免直接使用always块编写,采用模块化的标准DFF模块进行例化
例如:一个名为flg_dfflr的寄存器,除了时钟(clk)和复位信号(rst_n),还有使能信号flg_ena和输入(flg_nxt)以及输出信号(flg_r).

wire flg_nxt;
wire flg_r=~flg_nxt;
wire flg_ena=(ptr_r == (`E203_OITF_DEPTH-1)) & ptr_ena;
sirv_gnrl_dfflr #(1) flg_dfflrs(flg_ena,flg_nxt,flg_r,clk,rst_n);

在这里插入图片描述

使用标准DFF模块例化的优点:

  • 便于全局替换寄存器类型
  • 便于在寄存器中全局插入延迟
  • 明确的load-enable使能信号flg_ena(方便综合工具自动插入寄存器级别的门控时钟以降低动态功耗)
  • 便于规避verilog语法中if-else不能传播不定态的问题

在general文件夹中包含一个sirv_gnrl_xchecker.v文件(正是检查是否有不定态传播,一旦输入的i_dat出现不定态,报错并终止仿真)

(2)使用assign语法替代if-else 和case语句

  • 4
    点赞
  • 33
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值