一 全加器和半加器
全加器
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的写表达式并化简
二 分频器:奇数、偶数
三 复位:同步复位、异步复位、异步复位同步释放
同步复位
module sync_reset(
input rst_n, //同步复位信号
input clk, //时钟
input din, //输入数据
output reg dout //输出数据
);
always @(posedge clk) begin //复位信号不要加入到敏感列表中
if(!rst_n)
dout <= 1'b0 ; //rstn 信号与时钟 clk 同步
else
dout <= din ;
end
endmodule
异步复位
module async_reset(
input rst_n,
input clk,
input din,
output reg dout
);
always@(posedge clk or negedge rst_n)begin //复位信号要加到敏感列表中
if(rst_n)
dout <= 1'b0;
else
dout <= din;
end
endmodule
异步复位同步释放
module asreset_srelease(
input rst_n,
input clk,
input din,
output reg dout
);
reg rst_n1,rst_n2;
always@(posedge clk or negedge rst_n)begin
if(!rst_n)begin
rst_n1 <= 1'b0; //异步复位
rst_n2 <= 1'b0;
end
else begin
rst_n1 <= 1'b1; //同步释放
rst_n2 <= rst_n1; //同步打拍,时序差可以多延迟几拍
end
end
//使用 rstn_r2 做同步复位,复位信号可以加到敏感列表中
always@(posedge clk or negedge rst_n2)begin
if(!rst_n2)
dout <= 1'b1;
else
dout <= din;
end
endmodule
解释:
是否同步的判断:指的是复位信号是否受时钟信号干扰才能完成复位
同步复位:复位信号在时钟有效边沿到来时有效。如果没有时钟,无论复位信号怎样变化,电路也不执行复位操作。
异步复位:无论时钟到来与否,只要复位信号有效,电路就会执行复位操作。
异步复位同步释放:即复位信号到来时不受时钟信号的同步,复位信号释放时需要进行时钟信号的同步。为消除异步复位的缺陷,复位电路往往会采用"异步复位、同步释放"的设计方法。
信号 | 位宽 | 类型 | 描述 |
rst_n | 1bit | input | 复位 |
clk | 1bit | input | 时钟 |
din | 1bit | output | 输入数据 |
dout | 1bit | output | 输出数据 |
写RTL思路:
1 想电路的基本原理
2 输入、输出信号设计:框图、表格(信号名、位宽、类型(input or output)、功能描述)
3 绘制真值表、理论波形图:根据输入信号组合绘制,全面覆盖所有输入情况
4 代码编写
5 波形分析
常见数字电路:
1 逻辑函数表示方法和相互转换
(1)
逻辑表达式:
真值表:将输入变量所有可能的取值与相应的函数值列成的表
逻辑图:用与、或、非等逻辑符号表示逻辑函数中各变量之间的逻辑关系所得到的图形
波形图:输入和输出关系按时间顺序依次排列得到的图形
卡诺图(表达式的化简):将此函数的最小项表达式中的各项最小项相应地填入一个特定的方格图内,此方格图为卡诺图
(2)表示方法的相互转换
仿真常见问题:
1 在使用vivado进行后方真时会出现所有波形均为高阻态,不定态的现象。