-"어떻게 vactor에서 '1 최초로 발생 지수가 줄래?

O

omara007

Guest
안녕하세요 여러분

난 합성 Verilog 코드 또는 함수를 숫자 '1 '의 첫 번째 출현의 인덱스를 반환합니다'(또는 숫자 '0 ') 벡터에서 구현하도록합니다.예를 들어,이 벡터 량입니다 :

[7시 reg] x;

x = 8'b0100_1111

만약 우리가 MSB가부터 시작하는 우리 LSB가부터 시작 ''0 반환해야 함수의 executioin''6 반환해야합니다.

 
다음과 같은 기능을 처음으로 1 MSB는 측면에서 확인을 구현할 수있습니다 :

함수 func_first1 (입력 [7시] x)를;
시작
위한은 (i = 0; 난 "8; 전 = 내가 1)
시작
만약 (x [0])
func_first1 = 난;
그 밖의
x = x ""1;



따라서 우리는 LSB가 측면 처음 0이 너무 양쪽에서 처음으로 한 기능을 쓸 수있습니다 ...
만약 내가 정확 한 치의 실수도.

 
muni123 썼습니다 :

다음과 같은 기능을 처음으로 1 MSB는 측면에서 확인을 구현할 수있습니다 :함수 func_first1 (입력 [7시] x)를;

시작

위한은 (i = 0; 난 "8; 전 = 내가 1)

시작

만약 (x [0])

func_first1 = 난;

그 밖의

x = x ""1;



끝따라서 우리는 LSB가 측면 처음 0이 너무 양쪽에서 처음으로 한 기능을 쓸 수있습니다 ...

만약 내가 정확 한 치의 실수도.
 
입력 [7시] bit_in;
입력 check_bit;
입력 msb_lsb;

철사 [7시] bit_reverse;
철사 [7시] bit_use;

] fir_loc; / / 만약 비트 [3] == 1'b1, [3시 reg check_bit 찾을 수없습니다.

bit_reverse = (bit_in [0], bit_in [1], bit_in [2], bit_in [3], 할당
bit_in [4] bit_in [5], bit_in [6] bit_in [7]);

bit_use 지정 = (msb_lsb) bit_in : bit_reverse?

(bit_use 또는 check_bit) 항상 @
만약 (bit_use [7] == check_bit)
fir_loc = 4'h7;
다른 경우 (bit_use [6] == check_bit)
fir_loc = 4'h6;
다른 경우 (bit_use [5] == check_bit)
fir_loc = 4'h5;
다른 경우 (bit_use [4] == check_bit)
fir_loc = 4'h4;
다른 경우 (bit_use [3] == check_bit)
fir_loc = 4'h3;
다른 경우 (bit_use [2] == check_bit)
fir_loc = 4'h2;
다른 경우 (bit_use [1] == check_bit)
fir_loc = 4'h1;
다른 경우 (bit_use [0] == check_bit)
fir_loc = 4'h0;
그 밖의
fir_loc = 4'h8;

 
뭘 물어 보는거야 그냥 우선순위 인코더입니다 ...
이 코드는 쉽게 많은 텍스트 책들에서 사용할 수있습니다
그리고 yx.yang 코드를 부여하고있다 ...

 
lordsathish 썼습니다 :

뭘 물어 보는거야 그냥 우선순위 인코더입니다 ...

이 코드는 쉽게 많은 텍스트 책들에서 사용할 수있습니다

그리고 yx.yang 코드를 부여하고있다 ...
 
omara007 썼습니다 :

당신은 일반적인 너비의 벡터에 대한 코드를 권해 주시겠습니까?
 
변종 루프에 대한 기본적 parameterizable 함수 우선순위 인코더를 정의하는 적절한 활용 방법입니다.

그러나 위의 예제를 작성하려면 먼저 무엇을 모두 0으로 만들어진 벡터에 대한 출력의 정의했다.

 
fvm 썼습니다 :

그러나 위의 예제를 완료하려면, 먼저 무엇이 정의해야

모두 0 벡터에 대한 출력을위한.
 
fvm 썼습니다 :

변종 루프에 대한 기본적 parameterizable 함수 우선순위 인코더를 정의하는 적절한 활용 방법입니다.그러나 위의 예제를 작성하려면 먼저 무엇을 모두 0으로 만들어진 벡터에 대한 출력의 정의했다.
 
인용구 :

하지만 그건 정말 그런 경우에는 아무것도 입력 벡터를 모두 '0 '을 포함 아무 작업도 실행이 선택되어 너무 당연한
 
fvm 썼습니다 :인용구 :

하지만 그건 정말 그런 경우에는 아무것도 입력 벡터를 모두 '0 '을 포함 아무 작업도 실행이 선택되어 너무 당연한
 
fvm 썼습니다 :

/.../ 경우, 함수에 대한 출력 값을 정의

컴파일러가 임의의 (잘못된 할당)의 가치는 무료입니다
 
인용구 :

컴파일러는 모두 '0 ' "에 대한"입력; 제로에 자유로운 선택의 여지가 내 예제에서 0을 제공합니다;
 
수도 코드는 아래의 작업을 위해, 어떤 가치를 추가한다
x가 크기 8 다음 poscnt 및 finalpos 3 비트 너비의 위치입니다
다음 U 이러한 변수를 통해 UR 입력 (X)는 크기에 따라 크기를 변경할 수있습니다모듈 positioncnt (CLK);

입력 CLK;

[3시] poscnt = 4'b0; / / 카운터 폭 데이터를 기반으로합니다 너비 reg
reg [3시] finalpos; / / 카운터 폭 데이터를 기반으로합니다 너비
[7시 reg] x = 8'b0100_1100;와이어 MSB가 = 1'b0;
항상 (posedge CLK) @
시작
(MSB의 경우)
시작
만약 (x [7])
시작
finalpos "= 4'd7 - poscnt; / / 폭 - poscnt
x "= x;

그 밖의
시작
poscnt "= poscnt 1;
x "=를 (X [6시], 1'b0);


그 밖의
시작
만약 (x [0])
시작
finalpos "= poscnt; / / 폭 - poscnt
x "= x;

그 밖의
시작
poscnt "= poscnt 1;
x "= (1'b0, 엑스 [7시 1분]);





endmodule

 

Welcome to EDABoard.com

Sponsor

Back
Top