It's not time to enjoy life!

VHDL与Verilog笔记

上一篇 / 下一篇  2008-07-11 21:35:08 / 个人分类:技术专区

VHDL中,逻辑运算符是 and/or/nand/not/xor/xnor,其操作是按位操作;在Verilog中,按位操作符~/&/|/^/~^与VHDL中上述效果相同;Verilog中逻辑运算符是针对整体的,比如对于一个4位reg型的变量,只要其中一位不为零,则视为逻辑1,a=4'b0010,则!a=4'b0000。

Verilog中and/or/not等属于门级描述,一般不使用。

在VHDL中,移位操作(sll,srl,sla,sralrol,ror)只针对bit_vector进行操作EDA中国门户网站&u%P"z e$HzX9Q
逻辑移位和算术移位:逻辑左移与算术左移相同,主要区别在于右移时,逻辑右移是左边补0,而算术右移是根据符号位来补。EDA中国门户网站)j ArS'A-GDNSC
逻辑移位(不管是左移位还是右移位)   都是空缺处补0  
/F;dK%Ef8DV8SE0   
x2D,ye.w*?0  例如:     mov   ax   ,   1100_0111_0110_1000B  
2Q_$V*f;E7y5M4EI$L c0                  mov   cl   ,   3  
U!}k|:u3v0                  shl   ax   ,   cl                                     ;   结果     ax   =   0011_1011_0100_0000  
tk5s d ~0   
x%d*VE-U)a5S"p0                  mov   ax   ,   1100_0111_0110_1000B  EDA中国门户网站 [1Dd3{(L,a5{8l@:T_
                  mov   cl   ,   3  
[1UU(] dD0                  shr   ax   ,   cl                                     ;   结果     ax   =   0001_1000_1110_1101  
e6ce \{-Vu,B0   EDA中国门户网站3kVh'yL N2z
  算术移位要保证符号位的不改变(左移位补0,  右移位看符号位)  
,f%N7t*c{qM'p;sE0   
f4u"kM)XMsl0  例如:     mov   ax   ,   1100_0111_0110_1000B  EDA中国门户网站v T"s:|#qyE+G
                  mov   cl   ,   3  EDA中国门户网站kB3a'w8[ |)vsLd
                  sal   ax   ,   cl                                     ;   结果     ax   =   0011_1011_0100_0000  EDA中国门户网站'Zdn@0?)vx3tt
   
4r*k;o;Q}1i%_ZN0                  mov   ax   ,   1100_0111_0110_1000B  
Q O%m't s*n|r8k0                  mov   cl   ,   3  EDA中国门户网站8~IUVd#i }5Td
                  sar   ax   ,   cl                                     ;   结果     ax   =   1111_1000_1110_1101  
PRe qh$}6N0   
(f:yc1s9N3pY i0                  mov   ax   ,   0100_0111_0110_1000B  EDA中国门户网站#X Rf5A:p.\4X
                  mov   cl   ,   3  EDA中国门户网站@)P Y`7~G(Cz#go
                  sar   ax   ,   cl                                     ;   结果     ax   =   0000_1000_1110_1101          EDA中国门户网站e HV E `:b J
EDA中国门户网站L%s.u\ ss


M%W(H7D;]d;W_5XF0

在VHDL中,变量赋值:=,相当于verilog中的阻塞赋值=,立即生效;信号赋值<=,相当于Verilog中的非阻塞赋值语句<=。

例子1:
f'l @@&\G] An0LIBRARY IEEE;EDA中国门户网站CQdU%jm{fyR
USE IEEE.STD_LOGIC_1164.ALL;EDA中国门户网站cz6j;|c l8h } _ @
ENTITY DFF3 IS
'{` M!uQ0PORT(CLK,D1:IN STD_LOGIC;
#sHM!b-v(V$P4FU P3W:{0      Q1:OUT STD_LOGIC);
q/R J%`cUu5M6]0END;
H[ @ew&o/i7a YN0ARCHITECTURE bhv OF DFF3 ISEDA中国门户网站Ve2z |%Ga b"f
      SIGNAL A,B:STD_LOGIC;
6Ix(rXi!d+v0      BEGINEDA中国门户网站q5I!?_m([I bG"C
            PROCESS(CLK) BEGINEDA中国门户网站jW1Zd1xH
                  IF CLK’EVENT AND CLK =’1’ THENEDA中国门户网站]u2c)Wvv.i7ZD.Hr
                        A<=D1;
WSU T/a1`Rw0                        B<=A;
goy)I4x0                        Q1<=B;
m0e`iw;In0                  END IF
| rW~M'WB0            END PROCESS;
9HQEBN5o'`Y0      END;
X}A0|j(E3N+om0END bhvEDA中国门户网站} p(C*lC;r E R[C ^$^
 EDA中国门户网站 MGo_g&[3JR @*LX D
注:三个赋值语句(A<=D1; B<=A;Q1<=B;)都必须在遇到END PROCCESS后的δ时刻内执行,A被更新的值是第一个时钟上升沿的D1,B被更新的值是第二个时钟上升沿的A,Q1被更新的值是第三个时钟上升沿的B 。

 

EDA中国门户网站)Z b-SUu#vV)Y el;Zw
例子2:
;v;\vVV'e:`1~N u6R$I0LIBRARY IEEE;EDA中国门户网站 ?a*oO%fF.b,R
USE IEEE.STD_LOGIC_1164.ALL;
|6Vt,g8|9J0ENTITY DFF3 ISEDA中国门户网站ng-} J7V2B&k
PORT(CLK,D1:IN STD_LOGIC;EDA中国门户网站 G3w1{ La+a+}
      Q1:OUT STD_LOGIC);EDA中国门户网站+h/^%bi5n.T{
END;EDA中国门户网站1K}^$E8D}y\8z
ARCHITECTURE bhv OF DFF3 IS
j U {&Se-?d(A0      BEGIN
&Mvp*Tp,|0            PROCES(CLK)
$[Q9?"r'O DI$M(g#T0                  VARIABLE A,B:STD_LOGIC;
hD2bHn\&t,eSa0                  BEGINEDA中国门户网站#L?I,r-{)k/WK
                  IF CLK’EVENT AND CLK=’1’ THENEDA中国门户网站\ bNO TA@ w.`
                        A:=D1;
:N6Q6c4Zp;Mz!LF9rR0                        B:=A;EDA中国门户网站 M Zs(E}M^y
                        Q1<=B;EDA中国门户网站dJ0k,{:sc7bS5~a
                  END IF;EDA中国门户网站1Il0b:H Y S!FD
            END PROCESS;EDA中国门户网站6u9n(k~^}7m?S
      END;
3Z3Gghi*jU0END bhv
&y.jp`t;@&Ss0
y-tU8OC+ga;B0注:A、B是变量,担当了D1数据的暂存单元,它们的赋值更新是立即发生的。

 


FPGA/CPLD器件价格查询

TAG:

wrl的个人空间 引用 删除 wrl   /   2008-07-18 10:24:44
移位运算要注意前后变量的位数
4`b1001<<1=5`b10010;
1<<6=32`b1000000
什么意思
 

评分:0

我来说两句

显示全部

:loveliness: :handshake :victory: :funk: :time: :kiss: :call: :hug: :lol :'( :Q :L ;P :$ :P :o :@ :D :( :)

Open Toolbar