一 全加器和半加器
全加器:
module full_adder1(
input Ai, Bi, Ci,
output So, Co);
assign So = Ai ^ Bi ^ Ci ;
assign Co = (Ai & Bi) | (Ci & (Ai | Bi));
endmodule
module full_adder1(
input Ai, Bi, Ci
output So, Co);
assign {Co, So} = Ai + Bi + Ci ;
endmodule
解释:
1 全加器:
(1)概念:考虑来自低位的进位
(2)信号:
描述 | 信号 | 位宽 | 类型 |
加数1 | Ai | 1bit | input |
加数2 | Bi | 1bit | input |
来自低位的进位 | Ci | 1bit | input |
相加和 | So | 1bit | output |
向高位进位 | Co | 1bit | output |
(3)真值表:穷尽所有输入的组合
(4)表达式
2 半加器:
(1)概念:不考虑来自低位的进位
(2)信号:
描述 | 信号 | 位宽 | 类型 |
加数1 | Ai | 1bit | input |
加数2 | Bi | 1bit | input |
求和 | So | 1bit | output |
进位 | Co | 1bit | output |
(2)真值表和表达式:穷尽所有输入的组合-根据真值表为1的写表达式并化简
写RTL思路:
1 想电路的基本原理
2 输入、输出信号设计:框图、表格(信号名、位宽、类型(input or output)、功能描述)
3 绘制真值表、理论波形图:根据输入信号组合绘制,全面覆盖所有输入情况
4 代码编写
5 波形分析
常见数字电路:
1 逻辑函数表示方法和相互转换
(1)
逻辑表达式:
真值表:将输入变量所有可能的取值与相应的函数值列成的表
逻辑图:用与、或、非等逻辑符号表示逻辑函数中各变量之间的逻辑关系所得到的图形
波形图:输入和输出关系按时间顺序依次排列得到的图形
卡诺图(表达式的化简):将此函数的最小项表达式中的各项最小项相应地填入一个特定的方格图内,此方格图为卡诺图
(2)表示方法的相互转换
仿真常见问题:
1 在使用vivado进行后方真时会出现所有波形均为高阻态,不定态的现象。
解决:
将 decoder3_8_tb文件set as top,设置为 顶层文件,在 vivado中需要 手动设置,在Quartusii中仅有一个待测试文件时会自动设置为顶层文件。设置完顶层文件后再进行综合后可以看到行为级仿真下多了两个选项:功能仿真,和时序仿真。现在点击 功能仿真查看波形:
![](https://i-blog.csdnimg.cn/direct/dc2899f10d57412cb150e8347ab48897.png)