설계"하는

S

simu

Guest
그 동안 나의 프로그램의 모듈 부문 & Verilog 몽고메리 모듈러 곱셈에 대한 서면 컴파일, 나는 종종 다음과 같은 오류가 좀 ..

---- REM 수면 연산자를 단순화 수없습니다.
---- 루프를 64 번 반복하고있다.사용 '설정 loop_iteration_limit xx'는 더 반복합니다.

U 그게 뭔지 말해 줄래?

 
코드 몽고메리 모듈러 곱셈을위한
모듈 몽 (엑스, y를, 난, 아 가고, z);
입력 [3시] x;
입력 [3시] y를;
입력 [3시] 난;
입력 [3시] n;
출력 [3시] z는;
[3시 reg];
] v를 [3시 reg;
] P는 [3시 reg;
] 질문 [3시 reg;
[3시 reg] z는;
] U [3시 reg;
] 마 [7시 reg;
항상 (엑스, y를) @
시작
= y를 할당;
할당 v를 = x;
P는 할당 = n;

초기
시작
U = 0을 할당;

항상 (엑스, y를) @
반면 (P는! = 0)을 시작
(% 2 == 0)
= 0 q를 지정;
그 밖의
= 1 q를 지정;
할당 = (AQ를) / 2;
T는 = ((U 할당할 (q를 * v를)) / 2);
= 톤 / 년 2 % 난 U 할당;
P는 할당 = P는 - 1;

항상 (엑스, y를) @
만약 (U "= 난)
z는 = 음 할당;
그 밖의
부터 Z = U 할당;
endmodule

코드 모듈에 대한 부서

모듈 moddiv (엑스, y를, 아, z는);
입력 [3시] x;
입력 [3시] y를;
/ / 입력 [3시] 난;
입력 [3시] n;
출력 [3시] z는;
[3시 reg] z는;
철사 [3시] 난;
u를 P는 A와 B, 레지;
v를, 난 reg;
마, q를 reg;
항상 (엑스, y를) @
시작
= y를 할당;
b = 난 할당;
= x U 할당;
P는 할당 = n;

초기 시작
지정 승 = 0;
난 = 0을 할당;

항상 (엑스, y를) @
반면 (P는! = 0)을 시작
반면 (% 2 == 0) 시작
할당 = / 2;
= U / 2 % 난 U 할당;
P는 할당 = P는 - 1;
= 난 - 1리터 할당;

만약 (내가 "0)을 시작
T는 할당 =;
할당 = b;
할당 b = 마세요;
T는 할당 = U;
U = v를 지정;
v를 지정 = 마세요;
= - 내가 할당;

(( b)는 % 4 == 0 경우)
= 1 q를 지정;
그 밖의
= -1 q를 지정;
할당 = ( Q를 * b) 항 / 4;
= (U Q를 * 승) / 4 % 난 U 할당;
P는 할당 = P는 - 1;
= 난 - 1리터 할당;

항상 (엑스, y를) @
(나 == 1면)
z는 = v를 지정;
그 밖의
z는 = mV 할당;
endmodule

여기 모드 남 표현하기 위해, 난 % 남 사용한 적이; 이미 M. 모드를 나타내는 다른 방법입니다
아니면이 오류를 해결하려면 어떤 방법이 무엇입니까?

 
안녕하세요,

난, 그 루프를 무한히 반복을 참조하십시오.그것도 절차적 프로그래밍 문제를 컴퓨터와 구문 될 수 있지만 올바른 코드가 될 것이다.HDL을 있음도 불가능하고, 병렬 논리 구조의 원인이 신체의 반복 루프에서 그렇게 유추 수있다.이 무한한 게이트 수를에 상응하는 것입니다.

내가 깊이 코드를 들여다 시간이 지금 없다면, 간단하게 코딩 오류가있을 수있습니다.

안부,
프랭크

 
안녕하세요,

더 철저하게 moddiv 코드 examinating, 내가 볼 두 반복 루프
코드 :

반면 (P는! = 0)을 시작

반면 (% 2 == 0) 시작

할당 = / 2;

= U / 2 % 난 U 할당

P는 할당 = P는 - 1;

= 내가 - 1리터 할당;



//...


 
감사합니다

알고리즘에 대한 MODDIV입력 : 난 : 2 ^ 회 (N - 1) "난"2 ^ n을 GCD (㎡, 2) = 1 & 수상
엑스, y를 : 0 "= x"난, 0 "y를"난
출력 : Z부터 = x / y를 모드 난
알고리즘
: = y를; b : = 난; U : = x;
승 : = 0; P는 : = n; 나 : = 0;
P는! = 0하면서 할
모드 2 = 0하면서 할
: = / 2; U : = U / 2 모드 난;
P는 : = P는 - 1; 나 : = 난 - 1;
endwhile
만약 내가 "0 다음
마 : =; : = b; b : = 마세요;
마 : = U; U : = v를; 승 : = 마세요;
나 : = - 난;
최종면
만약 ( b)는 4 = 0 q를 입력한 다음 : = 1 모드;
다른 질문 : = -1;
: = ( Q를 * b) 항 / 4;
U : = (U Q를 * v) 본 / 4 모드 난;
P는 : = P는 - 1;
나 : = 난 - 1;
endwhile
b = 1을 입력한 다음부터 Z : = v를하는 경우;
사람 / * b = -1 * /
z는 : = mV;추가 30 분 후 :
MONTGOMERY MODULAR 곱셈 알고리즘에 대한입력 : 난 : 2 ^ 회 (N - 1) "난"2 ^ n을 GCD (㎡, 2) = 1;
엑스, y를 : 0 "= 엑스, y를"난
출력 : Z부터 = xy2 ^ n 모드 난
알고리즘
: = y를; U : = 0; 승 : = x; P는 : = n;
P는! = 0하면서 할
모드 2 = 0 q를 입력한 다음 경우에는 : = 0 사람
질문 : = 1;
: = (AQ를) / 2; U : = (U QV는) / 2 모드 난;
P는 : = P는 - 1;
endwhile
하면 불러 "= 난 다음부터 Z = 음;
그 밖의
z는 : = U;

나도 힘든 오류 정정을 느끼지 Verilog에서 초보자되고.
나는 또한이 모듈 부문 & 또한 같은 오류 결과 몽고메리 모듈러 곱셈에 대한 특정 다른 알고리즘을 시도

 

Welcome to EDABoard.com

Sponsor

Back
Top