标题:
组合逻辑电路技巧-3
[打印本页]
作者:
look_w
时间:
2017-9-22 20:12
标题:
组合逻辑电路技巧-3
5、逻辑运算实例
Input
Output
①
1bit
的加法器——半加器
a0,a1
s,c1
全加器
c0,a0,a1
s,c1
全加器:
assign s = (a0^a1)^c0;
assign t1 = a0&c0;
assign t2 = a1&c0;
assign t3 = a0&a1;
assign c1 = (t1|t2)|t3;
②利用缩减运算进行操作——变量
a
,
b
|a 缩减或
判断一个数全为
0
(若结果为
0
)
&a 缩减与
判断一个数全为
1
(若结果为
1
)
^a 缩减异或
判断一个数有奇数个
1
(若结果为
1
)
~^a 缩减同或
判断一个数有偶数个
1
(若结果为
1
)
|(a^b)
按位异或
+
缩减或
判断两个数相等(若结果为
0
)
6、算术运算加减乘除
+ - * 可综合
a/b 不可综合
整数除法,结果取靠近
0
的整数,(
b
为
0
时,结果为
x
)
a%b 不可综合
结果与
a
的符号相同
a**b
(
a
b)不可综合 ①操作数为实数、整数或带符号数,结果返回为实数
②操作数为无符号数,结果为无符号数
③
a
为
0
,且
b<0
,则输出为
x
④
a<0
,且
b
不是整数,则输出为
x
注:直接使用
“
/
”时,会占用很多资源,且时钟频率上不去。因为不是完全不能使用“/”,而是适不适合使用。如果不用于复杂的Verilog算法,且对计算时间要求不严,是可以使用的。
7、移位操作①
>>
逻辑右移
空位用
0
填充
<< 逻辑左移
空位用
0
填充
>>> 算术右移
无符号数,空位用
0
填充。有符号数,用其符号位填充
<<< 算术左移
空位用
0
填充
注:对于移位操作,移位的位数必须是常数值
有符号数 8’sb1000_1101>>>8’d2 = 8’sb1110_0011
②用移位代替
*
,可以节省资源
m = 17a = (16 + 1)*a = (a<<4) + a;
m = 6a = (8 - 2)*a = (a<<3) - (a<<1);
注:一些
FPGA
有
DSP
核,可将乘法器优化到这些硬核中去。
8、有符号数wire signed [7:0] a;
指定比特宽度的有符号数是可综合的。
9、加法电路分析注:减法一般可转化为加负的被加数处理。
4bit
,无符号数加法器
逐次进位型:建立时间为各级半
/
全加器的建立时间之和。
当位宽很大时,这种单元可以允许的最高工作时钟频率是很低的。
设:全加器的处理速度是
1ns
,全加器之间的传输线上的时延是
1ns
。
则time = 4 + 3 = 7ns
∴ 4bit
加法器需要
7ns
→
142.857MHz
进而,
10bit 10 + 9 = 19ns
→
52.631MHz
so
,要提高工作的最高时钟频率,采用时序电路里的流水线方法。
10、关系操作> < >= <= == !=
注:对于无符号数和有符号数的比较,从代码上看是没有区别的。
但是,除了相等和不等操作外,这两类数值的比较在电路上有区别。11
、高比特宽度比较
大于
>方法:先扩展位数宽度一致,然后一位位比较,如果相同再向下比。
①
a
!= b
→
a
^b
②
a
> b
→
a
&&
(!
b
)
12、不同编码方式下,比大于操作原码 反码 补码非负数 ①去掉符号位后,按无符号数处理
负数 ①之后,结果取反
注:
4
位有符号
二进制数的表示数值范围
原码 -7
~
7
有
+0
和
-0
反码 -7
~
7
有
+0
和
-0
补码 -8
~
7
而补码的出现,使以前的
-0
变为了
-128
→
1000
注意,补码
-128
并没有用原码和反码表示。
13、拼接操作 {signal1
,
signal2
,
......}
signal
可以是常数或变量,但位宽必须已知且不变。
①拼接操作实现全家器(
1bit
)
assign {c1,s1} = a0 + a1 + c0;
②乘法器 ×
17 =
×
16 +
×
1
8bit
assign mul = {4’b0000,a,4’b0000} + {8’h0,a};
优化:
wire [8:0] sum_middle
assign sum_middle = {1’b0,a} + {5’b00000, a[7:4]};
assign sun = {3’b000, sum_middle, a[3:0]};
③一个数据全部颠倒
wire [7:0] forward;
wire [0:7] reversed;
assign reversed = forward;
欢迎光临 电子技术论坛_中国专业的电子工程师学习交流社区-中电网技术论坛 (http://bbs.eccn.com/)
Powered by Discuz! 7.0.0