当前位置:   article > 正文

IC秋招RTL代码合集

IC秋招RTL代码合集

全加器和半加器

全加器

  1. module full_adder1(
  2. input Ai, Bi, Ci,
  3. output So, Co);
  4. assign So = Ai ^ Bi ^ Ci ;
  5. assign Co = (Ai & Bi) | (Ci & (Ai | Bi));
  6. endmodule
  1. module full_adder1(
  2. input Ai, Bi, Ci
  3. output So, Co);
  4. assign {Co, So} = Ai + Bi + Ci ;
  5. endmodule

半加器

解释

1 全加器:

(1)概念:考虑来自低位的进位

 

(2)信号:

描述信号位宽类型
加数1Ai1bitinput
加数2Bi1bitinput
来自低位的进位Ci1bitinput
相加和So1bitoutput
向高位进位Co1bitoutput

(3)真值表穷尽所有输入的组合

(4)表达式

2 半加器:

(1)概念:不考虑来自低位的进位

(2)信号:

描述信号位宽类型
加数1Ai1bitinput
加数2Bi1bitinput
求和So1bitoutput
进位Co1bitoutput

(2)真值表和表达式:穷尽所有输入的组合-根据真值表为1的写表达式并化简

二 分频器:奇数、偶数

三 复位:同步复位、异步复位、异步复位同步释放

同步复位

  1. module sync_reset(
  2. input rst_n, //同步复位信号
  3. input clk, //时钟
  4. input din, //输入数据
  5. output reg dout //输出数据
  6. );
  7. always @(posedge clk) begin //复位信号不要加入到敏感列表中
  8. if(!rst_n)
  9. dout <= 1'b0 ; //rstn 信号与时钟 clk 同步
  10. else
  11. dout <= din ;
  12. end
  13. endmodule

异步复位

  1. module async_reset(
  2. input rst_n,
  3. input clk,
  4. input din,
  5. output reg dout
  6. );
  7. always@(posedge clk or negedge rst_n)begin //复位信号要加到敏感列表中
  8. if(rst_n)
  9. dout <= 1'b0;
  10. else
  11. dout <= din;
  12. end
  13. endmodule

异步复位同步释放

  1. module asreset_srelease(
  2. input rst_n,
  3. input clk,
  4. input din,
  5. output reg dout
  6. );
  7. reg rst_n1,rst_n2;
  8. always@(posedge clk or negedge rst_n)begin
  9. if(!rst_n)begin
  10. rst_n1 <= 1'b0; //异步复位
  11. rst_n2 <= 1'b0;
  12. end
  13. else begin
  14. rst_n1 <= 1'b1; //同步释放
  15. rst_n2 <= rst_n1; //同步打拍,时序差可以多延迟几拍
  16. end
  17. end
  18. //使用 rstn_r2 做同步复位,复位信号可以加到敏感列表中
  19. always@(posedge clk or negedge rst_n2)begin
  20. if(!rst_n2)
  21. dout <= 1'b1;
  22. else
  23. dout <= din;
  24. end
  25. endmodule

解释:

是否同步的判断:指的是复位信号是否受时钟信号干扰才能完成复位

同步复位:复位信号在时钟有效边沿到来时有效。如果没有时钟,无论复位信号怎样变化,电路也不执行复位操作。

异步复位:无论时钟到来与否,只要复位信号有效,电路就会执行复位操作。

异步复位同步释放:即复位信号到来时不受时钟信号的同步,复位信号释放时需要进行时钟信号的同步。为消除异步复位的缺陷,复位电路往往会采用"异步复位、同步释放"的设计方法。

信号位宽类型描述
rst_n1bitinput复位
clk1bitinput时钟
din1bitoutput输入数据
dout1bitoutput输出数据

写RTL思路:

1 想电路的基本原理

2 输入、输出信号设计:框图、表格(信号名、位宽、类型(input or output)、功能描述)

3 绘制真值表、理论波形图:根据输入信号组合绘制,全面覆盖所有输入情况

4 代码编写

5 波形分析

常见数字电路:

1 逻辑函数表示方法和相互转换

(1)

逻辑表达式:

真值表:将输入变量所有可能的取值与相应的函数值列成的表

逻辑图:用与、或、非等逻辑符号表示逻辑函数中各变量之间的逻辑关系所得到的图形

波形图:输入和输出关系按时间顺序依次排列得到的图形

卡诺图(表达式的化简):将此函数的最小项表达式中的各项最小项相应地填入一个特定的方格图内,此方格图为卡诺图

(2)表示方法的相互转换

仿真常见问题:

1 在使用vivado进行后方真时会出现所有波形均为高阻态,不定态的现象。

解决:
decoder3_8_tb文件set as top,设置为 顶层文件,在 vivado中需要 手动设置,在Quartusii中仅有一个待测试文件时会自动设置为顶层文件。设置完顶层文件后再进行综合后可以看到行为级仿真下多了两个选项:功能仿真,和时序仿真。现在点击 功能仿真查看波形:
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/知新_RL/article/detail/889423
推荐阅读
相关标签
  

闽ICP备14008679号