디시인사이드 갤러리

갤러리 이슈박스, 최근방문 갤러리

갤러리 본문 영역

Verilog 질문!!! (코덱님 계시면 봐주세요!)

탱탱(123.254) 2009.05.05 17:50:05
조회 628 추천 0 댓글 10
														

코덱 님 답변 덕택에 assign 달고 오타 잡고 해서 에러 거의 다 수정 봤는데요....^_^;
(정말 감사드립니다. 오늘 새벽 5시부터 지금까지 베릴로그 공부하면서 멀티 사이클 프로세서 설계중이네요...ㅋ)

1.
- 에러 메시지 -
ERROR:HDLCompilers:28 - "processor.v" line 16 \'Instruction\' has not been declared
ERROR:HDLCompilers:28 - "processor.v" line 18 \'PC_Output\' has not been declared
ERROR:HDLCompilers:28 - "processor.v" line 29 \'Zero\' has not been declared
ERROR:HDLCompilers:28 - "processor.v" line 41 \'regB\' has not been declared

제가 wire 들을 제가 보고 있는 로직과 놓고 보았을 때 가독성이 좋도록, 모듈 단위로 선언을 했습니다.

그래서 첫번째 에러 메시지를 예로 들자면 16라인 뒤에 Instruction 이 선언되어 있는 상태입니다.
(소스 아래 있음)

보통 베릴로그 설계시 실무자들은 이런식으로 설계하지 않나요?

제가 보기에는 이렇게 설계 하여 로직과 일치도가 높아져서 보는 이가 해석하기가 쉬울 것이라 생각하는데...
(또한 processor 모둘은 always 등이 아니라, 모든 문장이 동시에 실행되어 순서상의 문제가 없으리라 판단하였습니다만...)

2. 아래 소스에 보면 Instruction 에 Bold 처리 된 것 말고, ALUOp 에 Bold 처리된 부분이 있습니다.

저 부분이 왜 Redeclaration 인지 이해가 되지 않습니다. (물론 주석처리 하니 에러는 없어졌습니다.)

모듈에서 Output 으로 설정한 변수는 다시 설정하지 않아도 되는 것인지요?
(제가 프로세서 코딩 할 때는 모듈의 input, output 을 모듈밖 모듈안에서 각각 2번씩 선언했습니다만...
유독 저 부분에서만 에러가 나는 것 같네요.)

모듈과 외부의 연결 시 변수를 어디서 어떻게 선언해야 된다는 원칙 따위가 있는지요?

최대한 읽으시는 분 편하게 질문 작성하려고 했는데, 워낙 기네요...ㅠ_ㅜ

고수님의 손길 기다리겠습니다!


- 소스 전문(모듈 생략) -
`timescale 1ns / 1ps

module processor(PCWriteCond, PCWrite, lorD, MemRead, MemWrite, MemtoReg, IRWrite, RegDst, RegWrite, ALUSrcA, ALUSrcB, ALUOp, PCSource, clk, reset);

input PCWriteCond, PCWrite, lorD, MemRead, MemWrite, MemtoReg, IRWrite, RegDst, RegWrite, ALUSrcA, ALUSrcB, ALUOp, PCSource;
input clk, reset;

//모듈 선언시 (아웃풋, 인풋, 컨트롤, 클럭, 리셋) 순으로 선언
//로직에 사용된 net 들은 언더바를 사용하여 선언
//Read register 따위는 ReadReg 로 고침(두번째 단어 첫번째 글자 대문자로 한 후 필요한 경우 약어 사용)

//"PC"\'s input
wire [27:0] Instruction25_Shifted;
wire [31:0] JumpAddress;

assign Instruction25_Shifted = {2\'b00, Instruction[25:0]};
assign Instruction25_Shifted = Instruction25_Shifted << 2;
assign JumpAddress = {PC_Output[31:28], Instruction25_Shifted};

mux32 PC_Input_mux(PC_Input, ALUresult, ALUOut_Output, JumpAddress, 32\'hzzzzzzzz);//3to1 Mux
//----------


//"PC"
wire PC_Control, tmp_PC_Control, reset;
//wire [31:0] PC_Input;
wire [31:0] PC_Output;

assign tmp_PC_Control = Zero & PCWriteCond;
assign PC_Control = PCWrite | tmp_PC_Control;

PC_module PC(PC_Output, PC_Input, PC_Control, clk, reset);

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


//"Memory"
wire [31:0] Address, WriteData_Memory, MemData;

assign Address = lorD ? ALUOut_Output : PC_Output;
assign WriteData_Mem = regB;

Memory_module Memory(MemData, Address, WriteData_Mem, MemRead, MemWrite, clk, reset);
//----------


//"Instruction register"
wire [31:0] Instruction;

IR_module IR(Instruction, MemData, IRWrite, clk);
//----------


//"Memory data register"
wire [31:0] MDR_Output;

MDR_module MDR(MDR_Output, MemData, clk);//No need for clk
//----------


//"Register"
wire [4:0] ReadReg1, ReadReg2, WriteReg;
wire [31:0] WriteData;
wire [31:0] ReadData1, ReadData2;

assign ReadReg1 = Instruction[25:21];
assign ReadReg2 = Instruction[20:16];
assign WriteReg = RegDst ? Instruction[15:11] : Instruction[20:16];
assign WriteData_Reg = MemtoReg ? MDR_Output : ALUOut_Output;

register32 Register(.read_data1(ReadData1), .read_data2(ReadData2), .read_register1(ReadReg1), .read_register2(ReadReg2), .write_register(WriteReg), .write_data(WriteData_Reg), .write(RegWrite), .clk(clk));
//**Need to be modified and added the reset function!
//----------


//"A, B"
reg [31:0] regA, regB;

assign regA = ReadData1;
assign regB = ReadData2;
//----------


//"ALU"
wire [31:0] ALU_Input1, ALU_Input2;
wire [31:0] Instruction15_Extended, Instruction15_Shifted;
wire Zero, Overflow, CarryOut, CarryIn;
//wire [31:0] ALUresult; // ***Why is it redeclaration?

assign ALU_Input1 = ALUSrcA ? regA : PC_Output;
assign Instruction15_Extended = Instruction[15] ? {16\'h1111, Instruction[15]} : {16\'h0000, Instruction[15]};
assign Instruction15_Shifted = Instruction15_Extended << 2;//**Is there any Problem with upper statement?
mux32 ALU_Input2_mux(ALU_Input2, ALUSrcB, ReadData2, 32\'h00000004, Instruction15_Extended, Instruction15_Shifted);
//**Is MUX is ok?
alu32 ALU(
.result(ALUresult), .zero(Zero), .overflow(Overflow), .carryout(CarryOut),//Output
.a(ALU_Input1), .b(ALU_Input2), .carryin(CarryIn), .operation(ALUcontrol_Output)//Input
);//No need for clk
//**Overflow, CarryOut, CarryIn is gone in logic!
//----------


//"ALUOut"
reg [31:0] ALUOut;
assign ALUOut = ALUresult;
//----------


//"ALUcontrol"
ALUcontrol_module ALUcontrol(.operation(ALUcontrol_Output), .func(Instruction[5:0]), .ALUOp(ALUOp));
//***Need to be designed


endmodule



* 혹시 몰라 로직도 첨부합니다.

추천 비추천

0

고정닉 0

0

댓글 영역

전체 댓글 0
본문 보기

하단 갤러리 리스트 영역

왼쪽 컨텐츠 영역

갤러리 리스트 영역

갤러리 리스트
번호 제목 글쓴이 작성일 조회 추천
설문 결혼 상대로 만나면 피곤할 것 같은 스타는? 운영자 26/02/02 - -
AD Windows 인기 노트북 기획전 운영자 26/01/23 - -
공지 프로그래밍 갤러리 이용 안내 [103] 운영자 20.09.28 49540 66
2912690 오늘은 치즈교 안오네 ㅇㅇ갤로그로 이동합니다. 11:41 7 0
2912689 ai가 진짜지능인지 보다 일을한다는사실이 중요하다봄 [1] 네오커헠(58.225) 11:27 19 0
2912688 LLM을 왜 ai라 불러 루도그담당(58.233) 11:11 22 1
2912687 ai 백엔드란게 무슨일 하는거냐?? ㅇㅇ(223.38) 11:07 20 0
2912686 요즘 신입들이 AI를 쓰는게 오히려 좋음 ㅇㅇ(114.30) 10:57 25 0
2912685 이제부터는 인간이직접개발하는건 틀딱도태꼰대마인드임 [3] 네오커헠(58.225) 10:30 87 0
2912684 근데 짤 먼가 슬픈듯 [4] 공기역학갤로그로 이동합니다. 10:30 50 0
2912682 ai 이렇게하니까 의존성높은 코드도 이해 잘하네 ㄷㄷ [3] 프갤러(119.207) 10:20 36 1
2912681 바이브코딩찬양하는 사람들이해가안되는데 [1] ㅇㅇ(121.152) 10:12 40 0
2912680 근데 면접 팁같은거 결국 전부 운빨인듯 [12] 공기역학갤로그로 이동합니다. 09:56 71 0
2912679 프갤러들아~ ㅇㅅㅇ [2] ㅇㅅㅇ(106.102) 09:52 35 0
2912678 근데 바이브코딩 나온지가 1년전인데 요즘뒷북인거같네 네오커헠(58.225) 09:23 77 0
2912677 태연 ㅇㅅㅇ 헤르 미온느갤로그로 이동합니다. 08:54 12 0
2912676 하루 한 번 헤르미온느 찬양 헤르 미온느갤로그로 이동합니다. 08:52 20 0
2912675 AI가 만들어준 헤비메탈 음악듣는데 좋네요 네오커헠(58.225) 08:50 35 0
2912673 C++ 공부 1일차 - (3/4) ㅇㅇ갤로그로 이동합니다. 08:22 38 0
2912672 문과충 국비6개월과정 다닐만함? [2] ㅇㅇ(222.100) 07:26 46 0
2912671 인지과학조져라 [8] 손발이시립디다갤로그로 이동합니다. 07:05 67 0
2912668 C++ 공부 1일차 - (2/4) ㅇㅇ갤로그로 이동합니다. 05:38 54 0
2912666 "1분에 전국 1조원 버리러 가기" 프갤러(117.111) 05:07 47 0
2912665 데이터센터 근무 중인데 관제분들 뭐하는거에요? [1] [너굴맨]갤로그로 이동합니다. 04:29 31 0
2912664 네이버 지식인 오류 보고 생각나는 얼마 전 썼던 글 발명도둑잡기(118.216) 03:24 39 0
2912663 AI '클로드 코워크'에 시장 '출렁'‥기존 소프트웨어 다 망한다? 발명도둑잡기(118.216) 03:06 40 0
2912662 C++ 공부 1일차 - (1/4) [1] ㅇㅇ갤로그로 이동합니다. 02:59 80 0
2912661 개도 발명도둑잡기(118.216) 02:55 17 0
2912660 오늘의 마케팅 기획 실마리: 두바이쫀득쿠키처럼 분기별 별미 음식 유행 발명도둑잡기(118.216) 02:49 17 0
2912659 이 대통령, SNS로 여론 주도…대한상의에 "가짜뉴스" 발명도둑잡기(118.216) 02:37 17 0
2912657 엡스타인은 스파이?...러시아·이스라엘 배후설 무성 [1] 발명도둑잡기(118.216) 02:01 21 0
2912656 노트북 카메라, 마이크, 와이파이 차단 법 발명도둑잡기(118.216) 01:43 16 0
2912652 요즘 성수기 시즌이라 매출은 나오는데 [8] chironpractor갤로그로 이동합니다. 02.07 78 0
2912650 취업하면 좋은 점 [4] cvs.갤로그로 이동합니다. 02.07 114 0
2912649 java는 다운받는게 젤어려움 [3] yslkxlrrz갤로그로 이동합니다. 02.07 69 0
2912647 다들 숨겨진 포트폴리오 있냐 폐기된 포트폴리오 [2] 넥도리아(14.35) 02.07 94 0
2912643 카페직원이 나 좋아하능거아님?!! [8] ㅇㅇ갤로그로 이동합니다. 02.07 109 1
2912640 여기 혹시 igor pro 코딩 하는 사람 잇음? [1] 프갤러(1.212) 02.07 44 0
2912638 gdgd 프갤러(39.7) 02.07 22 0
2912635 월드코인 개 씹스캠 코인 ㅇㅅㅇ [4] 따당갤로그로 이동합니다. 02.07 85 0
2912634 자바 코테 공부할때 쓰는 메소드들은 어느정도 정해져있죠? [3] ㅇㅇ갤로그로 이동합니다. 02.07 58 0
2912632 [대한민국] 진 커밍스 - 이재명 정부 마지막 경고 [1] ㅇㅇ(121.172) 02.07 44 0
2912631 dns서버도 자체호스팅이 가능하네 치즈교갤로그로 이동합니다. 02.07 51 0
2912630 ai가 프라이버시 침해 심할거같은데 [5] 치즈교갤로그로 이동합니다. 02.07 93 0
2912629 터미널에서도 ai달아서 바이브터미널 된다고함 치즈교갤로그로 이동합니다. 02.07 50 0
2912628 빗썸 개발자들 개좆밥이네 [1] ㅇㅇ(182.228) 02.07 102 0
2912627 프갤러가 있어서 오늘을 살아간다. [2] 브레이버갤로그로 이동합니다. 02.07 62 0
2912626 일에 집중이 안된다 십팔 [2] ㅇㅇ갤로그로 이동합니다. 02.07 70 0
2912625 클로드 수능 만점 따잇 멘탈붕괴 ㅇㅇ(59.0) 02.07 48 0
2912624 걸어가 브레이버갤로그로 이동합니다. 02.07 77 0
2912623 화장실 똥이 어는것 같다 날씨... 브레이버갤로그로 이동합니다. 02.07 24 0
2912622 [대한민국] 공산사회로 가는 길 - 사건 프로파일 [1] ㅇㅇ(121.172) 02.07 31 0
갤러리 내부 검색
제목+내용게시물 정렬 옵션

오른쪽 컨텐츠 영역

실시간 베스트

1/8

디시미디어

디시이슈

1/2