디시인사이드 갤러리

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

갤러리 본문 영역

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

탱탱(123.254) 2009.05.05 17:50:05
조회 624 추천 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
본문 보기

하단 갤러리 리스트 영역

왼쪽 컨텐츠 영역

갤러리 리스트 영역

갤러리 리스트
번호 제목 글쓴이 작성일 조회 추천
설문 연말 모임 가는 곳마다 가장 인싸일 것 같은 스타는? 운영자 25/12/08 - -
이슈 [디시人터뷰] 솔직함을 리뷰하는 유튜버, 흑백리뷰 운영자 25/12/09 - -
AD AI 가전 디지털 모음전 운영자 25/11/27 - -
공지 프로그래밍 갤러리 이용 안내 [98] 운영자 20.09.28 48874 65
2907659 층간소음 때문에 올라왔다 201호에서... 넥도리아(220.74) 18:12 1 0
2907658 내가 지금까지 상사로부터 금지당한 것들. 프갤러(60.196) 18:09 3 0
2907655 아씨발 [2] 개멍청한유라갤로그로 이동합니다. 17:10 28 0
2907654 안쓰는 using 하나 남겨놓은게 그렇게 잘못임? [4] 프갤러(60.196) 16:46 41 1
2907653 일본 아오모리 앞바다에 지진 또났네 [2] chironpractor갤로그로 이동합니다. 16:14 31 0
2907651 n8n 워크플로우 검색 사이트 무법자갤로그로 이동합니다. 15:33 23 0
2907650 유명인사 얼굴 로봇개가 인기래서 생각나는 예전 글 발명도둑잡기(118.216) 15:25 18 0
2907649 태어날때부터 뇌가 80% 손상된 애를 왜 살려놓는거임?? ㅇㅇ(223.38) 15:23 29 0
2907648 <키스는 괜히 해서>가 인기래서 생각나는 예전 글 발명도둑잡기(118.216) 15:21 19 0
2907647 국가보안법 폐지 반대 청원하기 [2] chironpractor갤로그로 이동합니다. 15:20 30 0
2907646 국가보안법 폐지 윤종오 의원의 댓글 읽기 발명도둑잡기(118.216) 15:06 14 0
2907645 [대한민국] 그라운드씨 전두환 대통령 재평가에 대한 생각 ㅇㅇ(121.172) 14:27 14 0
2907644 gpt 지능검사 업데이트 프갤러(14.47) 14:19 43 0
2907643 민주당 지지하는건 좌파가 아니야 chironpractor갤로그로 이동합니다. 14:17 30 2
2907642 [단독] 선행매매로 112억 번 기자, 이투데이-서울경제-서울경제TV 거 (211.36) 14:12 19 0
2907641 [애니뉴스] 워커풀 인터페이스 ㅇㅇ(121.172) 14:02 12 0
2907640 일단 이새끼 처빨았으면 아이큐 80이하인지 검사해봐야 [1] 프갤러(110.8) 13:35 50 1
2907639 시골 버스 터미널..ㅇㅅㅇ 헤르 미온느갤로그로 이동합니다. 13:34 16 0
2907638 일베충들 또 스멀스멀 기어나오네 [1] 프갤러(110.8) 13:33 28 1
2907637 태연 ㅇㅅㅇ 헤르 미온느갤로그로 이동합니다. 13:32 10 0
2907636 그래 로리야동 로리포르노 그만 검열해라 류류(118.235) 13:32 21 2
2907635 하루 한 번 헤르미온느 찬양 헤르 미온느갤로그로 이동합니다. 13:30 22 0
2907634 범죄 예방을 빌미로 검열과 차단을 거듭하는건 절대 정상적인게 아님. ㅇㅇ(223.38) 13:21 15 1
2907633 [애니뉴스][비판] 암살자인 내 스테이터스가 용사보다도 훨씬 강한데요 ㅇㅇ(121.172) 12:34 16 0
2907632 삼성이란 제품이 애플못지않게 홍어들제품이 됨 타이밍뒷.통수한방(1.213) 12:02 33 0
2907631 이재명은 우체국이 개인 우편물을 뜯어 확인하는게 국가권력 이라네?? [8] ㅇㅇ(223.38) 11:30 63 1
2907630 여자가 남자 무릎 위에 앉는 행동은 어떤 의미일까? [2] ㅁㅁㅅ갤로그로 이동합니다. 11:11 57 0
2907629 아 폐급대리 ㄹㅈㄷ네 [4] ㅇㅇ(106.101) 10:23 81 0
2907628 뭐라고요? 프갤러(112.149) 10:03 45 0
2907627 청년중에 삼성제품 쓰는새끼는 무조건 필터링함 ㅇㅇ [3] 타이밍뒷.통수한방(1.213) 09:39 80 0
2907626 파이썬말고 [1] ㅇㅇ(175.196) 09:05 52 0
2907625 파이썬 따위가 파이써닉 이지랄하는거 꼴같잖음 [2] 프갤러(110.8) 08:54 60 0
2907623 아침밥조져라 chironpractor갤로그로 이동합니다. 08:42 23 0
2907622 인지과학조져라 손발이시립디다갤로그로 이동합니다. 08:12 45 0
2907620 ❤✨☀⭐⚡☘⛩☃나님 시작합니당☃⛩☘⚡⭐☀✨❤ [2] ♥발라당냥덩♥갤로그로 이동합니다. 07:20 55 0
2907619 파이썬 참 좋은 언어입니다 [1] 루도그담당(58.233) 06:27 73 0
2907618 수백만명이 해고당하는중인 미국상황 [1] 발명도둑잡기(118.216) 06:18 86 1
2907616 이게 맞는 공부법임? [2] 프갤러(1.251) 03:19 71 0
2907614 고 신해철 '고스트스테이션' 다시 찾아온다 [1] 발명도둑잡기(118.216) 01:52 38 0
2907613 레드벨벳 조이, 몰라보게 날씬해졌네…단발머리 찰떡소화 발명도둑잡기(118.216) 01:22 36 0
2907612 "국제관계란 바둑판에서 단일한 외교경로에만 의존하면 쉽게 수세에 빠진다" [9] 발명도둑잡기(118.216) 01:04 64 0
2907611 국민의힘 큰절의 역사 발명도둑잡기(118.216) 00:57 34 0
2907610 프갤이 조용한건 [2] chironpractor갤로그로 이동합니다. 00:38 82 0
2907609 파이썬의 시대가 올가요 [2] ㅇㅇ갤로그로 이동합니다. 00:37 84 0
2907608 SQLD <<< 이쉑 어떰? [2] ㅇㅇ(222.96) 00:09 89 0
2907606 JAEMAN(재만) - With You(눈) 발명도둑잡기(118.216) 12.11 22 0
2907605 노상원 일당, '고문'에 '약물'까지…계획문건 나왔다 발명도둑잡기(118.216) 12.11 34 0
2907604 프로젝트 만들고 싶은데 여기 괜찮나요 프갤러(175.119) 12.11 36 0
2907603 USB-C 케이블이 DP 지원 안하는게 기본이구나 발명도둑잡기(118.216) 12.11 36 0
갤러리 내부 검색
제목+내용게시물 정렬 옵션

오른쪽 컨텐츠 영역

실시간 베스트

1/8

디시미디어

디시이슈

1/2