(디지털)"디자인

R

richeek

Guest
안녕
내가 프로세서 Verilog 코드를 작성했습니다.그것은 프로그램 카운터가있다.내가 내 최고의 모듈에 체크 디자인을 실행하고, 내 PC에 연결되지 않은 포트를 얻을.

여기에 PC의 Verilog 코드 :
`timescale 1ns / 1ps

모듈은 PC를 (소음, dout, 부하, countEn, 세 계 최 초의);
입력 [7시] 울리다;
입력 하중, countEn, 세 계 최 초의;
출력 [7시] dout;
] dout [7시 reg;

항상 (posedge countEn) @
시작
(세 계 최 초의 경우)
dout "= 0;
다른 경우 (로드)
dout "= 울리다;
그 밖의
dout "= dout 1;


endmodule

전 계층에서 내려와 거기가되지 않은 PC에서이 세포 B_1입니다.
문제는 내가 왜이 휴대폰 첫 번째 장소에서 생성된지고 디버깅할 수없는 이유는 무엇입니까?내 코드에 중복 무엇입니까?내가 생성된 디자인을 PC의 도식의 JPEG 이미지를 부착입니다.
어떤 도움을 주시면 감사하겠습니다.

감사합니다.
Richeek
미안하지만, 당신이 첨부 파일을 보려면 로그인이 필요합니다

 
당신은 'reg'배열 또는 변수의 초기화에 실패

모듈은 PC를 (소음, dout, 부하, countEn, 세 계 최 초의);
입력 [7시] 울리다;
입력 하중, countEn, 세 계 최 초의;
출력 [7시] dout;
] dout [7시 reg;당신은 8 요소를 배열로 reg 초기화해야합니다
내가 생각하는 구문입니다

정의의 실제 구조를 선언합니다
여기에 16 비트 단어를 버스로 8 비트 양방향 말일세 16 비트 데이터에서 간단한 다리 코드입니다

당신이 실제로 레지스터 구조를 선언해야
또는 그리고 컴파일러 등 하나를 던져 유효하지 않습니다여기에 다리를 코드에서 유효한 코드 블록입니다
수 있도록 ACSI 아타리 8 비트 overword 전송 비트 단어 syncro에
추가 SPI의와 로켓포 수 있도록

알면 jookies에 전체 프로젝트 사이트를 이곳에서

http://joo.kie.sk/satandisk/download.html`timescale 10ns/1ns

모듈을 메인 (aDATA, bDATA, ACK는, DRQ, INT, CS를, 대답, GotCmd, 마, 완료, PIOnDMA, RnW, CLK, ClrCmd);
inout [7시] aDATA;
입력 ACK는;
출력 DRQ;
출력 INT;
입력이 씨에스;
입력 대답;

inout [7시] bDATA;
입력 마십시오;
출력 완료;
입력 PIOnDMA;
입력 RnW;
출력 GotCmd;
입력 ClrCmd;

입력 CLK;

이러한 initialisers 또한 발 inital 설정되어있습니다 reg 배열의 요소를 >>>>>>>>

] rDATA [7시 reg;

MDO = 0 reg;

rINT = 1 reg;
rDRQ = 1 reg;
rDone = 0 reg;
= 0 rGotCmd reg;

= 0 잡아 reg;

reg를 prevCS prevACK;

>>>>>>>>>>>>>
posedge주기가 시작되기 전에 감지 선언 "" "즉, reg 8 요소가있다
"" "MDO [0] rINT [1] rDRQ [2] rDONE [3] [4] 잠깐 만요 [5] [6] prevACK [7] prevCS rGotCmd

= 8 요소 logicaly 가득 0-7 또는 배열 요소 노드의

다음 바이트 또는 한입들처럼 컨트롤 등록을 비교할 수있습니다
즉, 4 개 또는 8 비트 제어 구조체
같은 레지스터 제어 구조 즉, MSB는 LSB가있습니다 00,000,110
이전 등록 '컨트롤'의 일상적인 변화가 시작

//---------------------------------------
항상 (posedge CLK) @
시작
만약 (! MDO & & 마) / / posedge 마
시작
만약 (PIOnDMA) / / PIO를
시작
rINT = 0; / / INT 패로
rDRQ = 1; / / DRQ 복원
다른 끝 / / DMA가
시작
rDRQ = 0; / / DRQ 패로
= 1 rINT; / / INT 복원


(RnW 경우)
시작
rDATA "= bDATA;


rDone "= 0;
MDO "= 마십시오;


만약 (MDO & &!) / / negedge 마
시작
rDone "= 0;

MDO "= 마십시오;

//----------------
만약 (ClrCmd) / / 취소 완료
시작
rDone "= 0;
rGotCmd "= 0;

= 1 rINT; / / INT 복원
rDRQ = 1; / / DRQ 복원
= 0 만요;

//----------------
만약 ((& & CS)을 prevCS | | (& &는 ACK prevACK)) / / 만약 신호가 최고입니다
시작
= 0 만요;

//----------------
만약 ((! & & CS)을 prevCS | | (! & & ACK는 prevACK)) / / 가장자리를 제기하는 경우
시작
= 1 잠깐 만요;

//----------------
/ / 만약 (CS를 | |!는 ACK) / / 만약 데이터가! 래치를해야한다
만약 (! CS를 | | (! & &!는 ACK)) / / 만약 데이터가 래치를해야 prevACK / /
만약 ((! & &! CS)을 prevCS | | (! & &!는 ACK)) / / 만약 내가 데이터를 래치합니다 prevACK
시작

만약 (! RnW & &! rDone) / / 쓰기?
시작
rDATA "= aDATA; ST의 / / AVR에서


= 1 잠깐 만요;

(! CS)을하는 경우
시작
= 1 rINT;


(! ACK는 경우)
시작
rDRQ = 1;


만약 (! 씨에스 & &! 대답) / / 만약 명령을 받았습니다
시작
rGotCmd "= 1;


rDone "= 1;

//----------------
prevCS "= CS를;
prevACK "= ACK는;

//------------------------
할당 bDATA = (rDone & &! RnW)?rDATA : 8'bz;
할당 aDATA = ((! CS를 | |! ACK는 | | 잠깐) & & RnW)?rDATA : 8'bz;
INT = rINT 할당?1'bz : 0;
할당 DRQ = rDRQ?1'bz : 0;
/ / = rINT INT 할당;
/ / = rDRQ DRQ 할당;
완료 할당 = rDone;
GotCmd = rGotCmd 할당;
endmodule추가 26 분 후 :모듈은 PC를 (소음, dout, 부하, countEn, 세 계 최 초의);
입력 [7시] 울리다;
입력 하중, countEn, 세 계 최 초의;
출력 [7시] dout;
] dout [7시 reg;
에서는, D1에, d2, D3, d4로, D5를, d6, D7 reg;아무 컴파일러 오류와 함께 작동합니다

 
답변에 대한 Thans VSMVDD.
난 여전히 의심했다.
왜 내가 dout 배열을 초기화해야합니까?휴대폰 B_1 ()는 초기화하는 방법과 관련된 않습니다 매달려 왼쪽 그림 참조?

VSMVDD 썼습니다 :

당신은 'reg'배열 또는 변수의 초기화에 실패모듈은 PC를 (소음, dout, 부하, countEn, 세 계 최 초의);

입력 [7시] 울리다;

입력 하중, countEn, 세 계 최 초의;

출력 [7시] dout;

] dout [7시 reg;당신은 8 요소를 배열로 reg 초기화해야합니다

내가 생각하는 구문입니다정의의 실제 구조를 선언합니다

여기에 16 비트 단어를 버스로 8 비트 양방향 말일세 16 비트 데이터에서 간단한 다리 코드입니다당신이 실제로 레지스터 구조를 선언해야

또는 그리고 컴파일러 등 하나를 던져 유효하지 않습니다여기에 다리를 코드에서 유효한 코드 블록입니다

수 있도록 ACSI 아타리 8 비트 overword 전송 비트 단어 syncro에

추가 SPI의와 로켓포 수 있도록알면 jookies에 전체 프로젝트 사이트를 이곳에서http://joo.kie.sk/satandisk/download.html`timescale 10ns/1ns모듈을 메인 (aDATA, bDATA, ACK는, DRQ, INT, CS를, 대답, GotCmd, 마, 완료, PIOnDMA, RnW, CLK, ClrCmd);

inout [7시] aDATA;

입력 ACK는;

출력 DRQ;

출력 INT;

입력이 씨에스;

입력 대답;inout [7시] bDATA;

입력 마십시오;

출력 완료;

입력 PIOnDMA;

입력 RnW;

출력 GotCmd;

입력 ClrCmd;입력 CLK;이러한 initialisers 또한 발 inital 설정되어있습니다 reg 배열의 요소를 >>>>>>>>] rDATA [7시 reg;MDO = 0 reg;rINT = 1 reg;

rDRQ = 1 reg;

rDone = 0 reg;

= 0 rGotCmd reg;= 0 잡아 reg;reg를 prevCS prevACK;>>>>>>>>>>>>>

posedge주기가 시작되기 전에 감지 선언 "" "즉, reg 8 요소가있다

"" "MDO [0] rINT [1] rDRQ [2] rDONE [3] [4] 잠깐 만요 [5] [6] prevACK [7] prevCS rGotCmd= 8 요소 logicaly 가득 0-7 또는 배열 요소 노드의다음 바이트 또는 한입들처럼 컨트롤 등록을 비교할 수있습니다

즉, 4 개 또는 8 비트 제어 구조체

같은 레지스터 제어 구조 즉, MSB는 LSB가있습니다 00,000,110

이전 등록 '컨트롤'의 일상적인 변화가 시작//---------------------------------------

항상 (posedge CLK) @

시작

만약 (! MDO & & 마) / / posedge 마

시작

만약 (PIOnDMA) / / PIO를

시작

rINT = 0; / / INT 패로

rDRQ = 1; / / DRQ 복원

다른 끝 / / DMA가

시작

rDRQ = 0; / / DRQ 패로

= 1 rINT; / / INT 복원

끝(RnW 경우)

시작

rDATA "= bDATA;

끝rDone "= 0;

MDO "= 마십시오;

끝만약 (MDO & &!) / / negedge 마

시작

rDone "= 0;MDO "= 마십시오;



//----------------

만약 (ClrCmd) / / 취소 완료

시작

rDone "= 0;

rGotCmd "= 0;= 1 rINT; / / INT 복원

rDRQ = 1; / / DRQ 복원

= 0 만요;



//----------------

만약 ((& & CS)을 prevCS | | (& &는 ACK prevACK)) / / 만약 신호가 최고입니다

시작

= 0 만요;



//----------------

만약 ((! & & CS)을 prevCS | | (! & & ACK는 prevACK)) / / 가장자리를 제기하는 경우

시작

= 1 잠깐 만요;



//----------------

/ / 만약 (CS를 | |!는 ACK) / / 만약 데이터가! 래치를해야한다

만약 (! CS를 | | (! & &!는 ACK)) / / 만약 데이터가 래치를해야 prevACK / /

만약 ((! & &! CS)을 prevCS | | (! & &!는 ACK)) / / 만약 내가 데이터를 래치합니다 prevACK

시작만약 (! RnW & &! rDone) / / 쓰기?

시작

rDATA "= aDATA; ST의 / / AVR에서

끝= 1 잠깐 만요;(! CS)을하는 경우

시작

= 1 rINT;

끝(! ACK는 경우)

시작

rDRQ = 1;

끝만약 (! 씨에스 & &! 대답) / / 만약 명령을 받았습니다

시작

rGotCmd "= 1;

끝rDone "= 1;



//----------------

prevCS "= CS를;

prevACK "= ACK는;



//------------------------

할당 bDATA = (rDone & &! RnW)?
rDATA : 8'bz;

할당 aDATA = ((! CS를 | |! ACK는 | | 잠깐) & & RnW)?
rDATA : 8'bz;

INT = rINT 할당?
1'bz : 0;

할당 DRQ = rDRQ?
1'bz : 0;

/ / = rINT INT 할당;

/ / = rDRQ DRQ 할당;

완료 할당 = rDone;

GotCmd = rGotCmd 할당;

endmodule
추가 26 분 후 :
모듈은 PC를 (소음, dout, 부하, countEn, 세 계 최 초의);

입력 [7시] 울리다;

입력 하중, countEn, 세 계 최 초의;

출력 [7시] dout;

] dout [7시 reg;

에서는, D1에, d2, D3, d4로, D5를, d6, D7 reg;
아무 컴파일러 오류와 함께 작동합니다
 
안녕하세요 richeek,

당신이 정교하지 컴파일 후에 후에이 경고를 가지고 있군요.그렇다면 그냥 무시합니다.
또한 매우 자주 디자인이 경고했다.하지만 정교 단계 후에만 표시됩니다.자신의 컴파일 후 사라지고있습니다.
난이 DC에 버그라고 생각합니다.

bests,
Tiksan
http://syswip.com/

 
후 체크 디자인을 했어 내가 낼께.또한 실제로 B_1 (재설정 또는 하중이 아니다)
아무도 설명할 수 방법을 코드를 이런식으로 합성지고 무엇입니까?

감사합니다
Richeek

 
하면 컴파일하기 전이나 후에 체크 디자인을 실행하는 거죠?

 
Syswip 썼습니다 :

하면 컴파일하기 전이나 후에 체크 디자인을 실행하는 거죠?
 

Welcome to EDABoard.com

Sponsor

Back
Top