1、多路选择器
2选1多路选择器
积之和的形式:求积(与门),求和(或门)
4选1选择器:利用两个S0,S1的组合作为选择判断点,再利用积之和形式
也可以利用多个2选1,理解为分级处理
对4选1多路选择器,进行逻辑综合
思路:
2、香浓定理
3、译码器
思考如何实现4-16译码器
4、编码器
5、比较器
6、Verilog代码实现组合逻辑
// 2选1
module mux2to1(w0,w1,s,f)
assign f = s? w1 : w0;
endmodule
//4选1选择器
module mux4to1(w0,w1,w2,w3,s,f)
input w0,w1,w2,w3;
input [1:0] s;
output f
assign f = s[1]? (s[0] ? w3 :w2) : (s[0] ? w1 :w0)
endmodule
if语句实现组合逻辑
case语句实现组合逻辑
Verilog运算符
//按位运算
~ //取反
& //按位与
| //按位或
^ //按位异或
~^或者^~ //按位同或
//逻辑运算
! //取反,标量时和按位取反一样,矢量时就不一样了,f=!A 当A的所有位都为假的时候,f输出为真
&& //与
|| //或
//缩减运算 就是对单个矢量操作数的位之间进行运算,其结果缩减为一位二进制数
& //缩减与 f=&A 其实意义时f=a0*a1*a2
~& //缩减与非
| //缩减或
~| //缩减或非
^ //缩减异或
~^或者^~ //缩减同或
//算术运算 标准的算术操作
+ //加
- //减
- //补码
* //乘法
/ //除法
//关系运算
> //大于
< //小于
>= //大于等于
<= //小于等于
//等式运算
== //逻辑等于
!= //逻辑不等于
//移位运算
>> //右移
<< //左移
//位连接运算 把两个或更多的矢量连接到一起,形成更大的矢量
//假如超出上限怎么办?会丢弃吗?
{,} //连接
//复制运算
{{}} //复制,{3{a}}等价于{a,a,a}
//条件运算
? : //条件
优先级
练习