2014-01-23 3 views
2

Verilog에서 ** 의미는 무엇입니까?Verilog ** 표기법

나는 테스트 벤치

localparam NUM_INPUT_BITS  = 1; 
localparam NUM_OUTPUT_BITS  = NUM_INPUT_BITS + 1; 
localparam MAX_OUTPUT_BIT  = NUM_OUTPUT_BITS - 1; 
localparam NUM_TEST_BITS  = (NUM_INPUT_BITS * 2) + 1; 
localparam MAX_TEST_BIT   = NUM_TEST_BITS - 1; 
localparam NUM_TEST_CASES  = 2 ** NUM_TEST_BITS; 
localparam MAX_TEST_VALUE  = NUM_TEST_CASES - 1; 
localparam TEST_A_BITTEST_A_BIT = 0; 
localparam TEST_B_BIT   = NUM_INPUT_BITS; 
localparam TEST_CARRY_IN_BIT = MAX_TEST_BIT; 
localparam TEST_SUM_BIT   = 0; 
localparam TEST_CARRY_OUT_BIT = MAX_OUTPUT_BIT; 
localparam TEST_DELAY   = 10; 

에 제공되는 다음과 같은 논리를 가지고 그리고 나는 NUM_TEST_CASES 값으로 평가됩니다 무엇을 알아낼 수 없습니다. 최종 답은 8이어야합니다. ** ass **는 y ** x = y^x를 의미합니다.하지만 확인하고 싶습니다.

+0

IEEE Std 1800-2012는 무료 PDF이며, '**'검색은 '11.4.3 산술 연산자'섹션을 빠르게 찾을 수 있습니다. – toolic

+0

IEEE Std 1800-2012로 링크 : http://standards.ieee.org/getieee/1800/download/1800-2012.pdf – Greg

+3

^는 XOR 연산자로 사용되었습니다. –

답변

13

두 개의 별표는 Verilog 2001에 도입 된 "강력한"연산자입니다. 왼쪽 피연산자를 오른쪽 피연산자의 제곱으로 취하는 산술 연산자입니다. 즉, X ** YXY의 수위까지 올립니다. 그래서 귀하의 경우에 2 ** NUM_TEST_BITS은 2를 힘의 NUM_TEST_BITS에 두는 것을 의미합니다.

+1

내가 verilog 1993을 사용하고 있다면 연산자는 무엇입니까? –

0

종종 2 ** N-1은 모든 N 비트를 나타내는 데 사용되는 2 ** 4 예 1이다 - 1 = 15 의미 4'b1111

2

**는의 제곱 파워 운전 (인).

+1

다른 답변에서 이미 말한 내용을 다시 해쉬하는 것은 거의 요지가 없습니다. 특히 그 답변이 이미 잠시 동안 주변에 있었다면 더욱 그렇습니다. –