logo

Verilog 연산자

연산자는 표현식 내의 하나 이상의 피연산자에 대해 연산을 수행합니다. 표현식은 피연산자와 적절한 연산자를 결합하여 원하는 함수 표현식을 생성합니다.

1. 산술 연산자

FPGA의 경우 나눗셈과 곱셈은 매우 비용이 많이 들고 때로는 나눗셈을 합성할 수 없습니다. 값으로 Z 또는 X를 사용하면 결과를 알 수 없습니다. 작업에서는 값을 부호 없는 값으로 처리합니다.

성격 수행된 작업
+ 추가하다 b + c = 11
- 빼기 b - c = 9, -b=-10
/ 나누다 b / a = 2
* 곱하다 a * b = 50
% 계수 b % a = 0

2. 비트 연산자

각 비트가 연산되고 결과는 가장 큰 피연산자의 크기이며 더 작은 피연산자는 더 큰 피연산자의 크기까지 0으로 확장됩니다.

성격 수행된 작업
~ 각 비트를 반전 ~a = 3'b010
& 그리고 각 비트 b & c = 3'b010
| 아니면 비트마다 | b = 3'b111
^ 각 비트를 Xor a ^ b = 3'b011
^~ 아니면 ~^ Xnor 각 비트 a ^~ b = 3'b100

3. 환원 연산자

이러한 연산자는 벡터를 단 1비트로 줄입니다. 문자 z 및 x가 있는 경우 결과는 알려진 값일 수 있습니다.

성격 수행된 작업
& 그리고 모든 비트 &a = 1'b0, &d = 1'b0
~& 낸드 올 비트 ~&a = 1'b1
| 아니면 모든 비트 |a = 1'b1, |c = 1'bX
~| 모든 비트도 아님 ~|a=1'b0
^ 모든 비트를 Xor ^a = 1'b1
^~ 아니면 ~^ Xnor 모든 비트 ~^a=1'b0

4. 관계 연산자

이러한 연산자는 피연산자를 비교하여 1비트 스칼라 부울 값을 생성합니다. 대소문자 동등 및 부등 연산자는 알 수 없거나 높은 임피던스 값(z 또는 x)에 사용할 수 있으며, 두 피연산자를 알 수 없는 경우 결과는 1입니다.

성격 수행된 작업
> 보다 큰 a > b = 1'b0
< 보다 작은
>= 이상 a >= d = 1'bX
<=< td> 보다 작거나 같음 ㅏ<= e='1'bX</td'>
== 평등 a == b = 1'b0
!= 불평등 != b = 1'b1
=== 대소동등 e === e = 1'b1
!=== 사례 불평등 그리고 !== d = 1'b1

5. 논리 연산자

이러한 연산자는 피연산자를 비교하여 1비트 스칼라 부울 값을 생성합니다.

성격 수행된 작업
! 사실이 아니다 !(a && b) = 1'b1
&& 두 표현 모두 참 a && b = 1'b0
|| 하나 또는 둘 다 표현이 참 그리고 || b = 1'b1

6. 교대 연산자

이러한 연산자는 피연산자를 오른쪽이나 왼쪽으로 이동하고 크기는 일정하게 유지되며 이동된 비트는 손실되고 벡터는 0으로 채워집니다.

유튜브 비디오 vlc 다운로드
성격 수행된 작업
>> 오른쪽으로 이동 b >> 결과 1개 4?b010X
<< 왼쪽으로 이동 a << 2개 결과 4?b1000

7. 할당 연산자

세 가지 할당 연산자가 있으며, 각각은 서로 다른 작업을 수행하고 서로 다른 데이터 유형과 함께 사용됩니다.

  • 할당(지속 할당)
  • <= (non-blocking assignment)< li>
  • = (차단 할당)

8. 기타 운영자

조건 테스트 및 벡터 생성에 사용되는 연산자입니다.

성격 수행된 작업
?: 조건 테스트 테스트 조건 ? 사실이라면 이렇게 하고, 그렇지 않다면 이렇게 하세요.
{} 사슬 같이 잇다 c = {a,b} = 8'101010x0
{{}} 뒤로 젖히다 {3{2'b10}}= 6'b101010

9. 연산자 우선순위

테이블의 순서에 따라 어떤 작업이 먼저 수행되는지 알 수 있습니다. 첫 번째 항목이 가장 높은 우선순위를 갖습니다. ()를 사용하여 기본값을 무시할 수 있습니다.

연산자 우선순위
+, -, !, ~(단항)
+,-(바이너리)
<>
,=
==, !=
&
^, ^~ 또는 ~^
|
&&
||
?: