디시인사이드 갤러리

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

갤러리 본문 영역

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

탱탱(123.254) 2009.05.05 17:50:05
조회 618 추천 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/10/20 - -
AD iPad Pro 사전예약!! 운영자 25/10/17 - -
공지 프로그래밍 갤러리 이용 안내 [97] 운영자 20.09.28 48116 65
2897541 대가리가 멍청하면 다중질도 못함 [6] 루도그담당(211.184) 10:05 74 0
2897540 조선인의 본성 [1] ㅇㅇ(211.216) 09:59 23 0
2897539 AI가 법을 장악하는 순간 저스트두잇이여(211.108) 09:53 9 0
2897538 추하다 추해 [5] 루도그담당(211.184) 09:51 72 0
2897537 단독]이재명 김현지 영상 단독 공개 ♥덩냥이♥갤로그로 이동합니다. 09:44 17 0
2897536 전공자 부심 부리는 애들중에 [2] 루도그담당(211.184) 09:30 68 0
2897535 코로나때 검증 안 된 가짜들이 돈 ㅈㄴ 벌었구나 [1] 프갤러(222.108) 09:08 42 0
2897533 다른 이유 없이 그저 존재하는것만으로 감사해본 상대가 있어? [2] 프갤러(1.211) 08:18 34 0
2897531 ❤✨☀⭐⚡☘⛩나님 시작합니당⛩☘⚡⭐☀✨❤ ♥덩냥이♥갤로그로 이동합니다. 07:46 21 0
2897530 길냥덩들은 색깔만 보고도 암수 구별 가능 ♥덩냥이♥갤로그로 이동합니다. 07:41 22 0
2897529 끙야뿡야 ♥덩냥이♥갤로그로 이동합니다. 07:36 25 0
2897528 인생엉망이야 agi 가 어서 세상리셋해줘 [1] ㅇㅇ(175.197) 06:59 24 0
2897527 완전 겨울이넹 [1] ♥덩냥이♥갤로그로 이동합니다. 06:52 37 0
2897526 딥시크의 미친 아이디어, GPU 1/10로 만들다 발명도둑잡기(118.216) 06:45 24 0
2897525 국가로부터 위임 받은 상업은행의 특권 중 하나가 신용창출이다 [1] 발명도둑잡기(118.216) 06:32 18 0
2897524 종부세와 청년 월세 [1] 발명도둑잡기(118.216) 06:21 33 0
2897523 고신용자 이자 높이고 저신용자 이자 낮추려면 뭘 해야 발명도둑잡기(118.216) 05:52 20 0
2897522 난리 난 국립중앙도서관 응대 매뉴얼 발명도둑잡기(118.216) 05:13 18 0
2897521 어느 골목길..ㅇㅅㅇ [1] 헤르 미온느갤로그로 이동합니다. 04:54 21 0
2897520 태연 ㅇㅅㅇ 헤르 미온느갤로그로 이동합니다. 04:51 24 0
2897519 하루 한 번 헤르미온느 찬양 헤르 미온느갤로그로 이동합니다. 04:50 32 0
2897518 재판부 직접 "한덕수 공소장 바꿔라"…유죄 땐 최대 사형 발명도둑잡기(118.216) 04:13 19 0
2897517 실명 커뮤니티가 있어야한다니까 [1] 프갤러(223.39) 04:08 54 0
2897516 아가리만 산새끼들 보면 패고싶지않냐? 프갤러(223.39) 04:05 36 0
2897515 코딩용? 노트북 뭐 쓰시나요? [1] 프갤러(119.202) 03:56 38 0
2897514 오늘의 소설, 영화 실마리: 인기 예술가가 알고보니 인공지는 로보트 발명도둑잡기(118.216) 03:07 17 0
2897512 죽은 인터넷 이론 발명도둑잡기(118.216) 02:57 23 0
2897510 요즘 여행관련 미디어가 한풀 꺾인 느낌이 든다 ㅇㅅㅇ... [1] ㅇㅇ(223.39) 02:04 32 0
2897508 ai시대 좀 너무한거같음 [3] 프갤러(39.117) 01:59 65 0
2897506 좋은 일본노래 듣고가세요 [1] 프로외노자갤로그로 이동합니다. 01:34 32 0
2897505 힙합이 아이돌한테 밀리는 이유 큰 부분은 바로 외모다 [1] 발명도둑잡기(118.216) 01:32 30 0
2897503 신은 반응하지 않는다 [2] 발명도둑잡기(118.216) 01:16 33 0
2897501 빚이 없으면 따분함 [4] ㅇㅇ(113.59) 00:56 50 0
2897500 !!!언제나 씹게이같게! Chatter BBS!!!! [2] 파란빤스갤로그로 이동합니다. 00:55 34 0
2897498 근데 어차피 인생 망하면 일본 밀항해서 붓카게 배우 될거 [3] ㅆㅇㅆ(124.216) 00:54 49 0
2897496 속내 털어낸 박지원 "장동혁 대표직 오래 하라" 발명도둑잡기(118.216) 00:42 22 0
2897494 아 오늘은 업워크 프로포셜 안날리고 그냥 자야긋다 [1] ㅆㅇㅆ(124.216) 00:39 31 0
2897492 와 적자 첨 당해보니까 진짜 우울하네 [8] ㅆㅇㅆ(124.216) 00:27 96 0
2897491 이이경, 19금 사생활 폭로에 "허위사실 법적대응" 발명도둑잡기(118.216) 00:23 333 0
2897490 대체 취소된 이유가 뭘까 인생이 너무 쓰다 그냥 [11] ㅆㅇㅆ(124.216) 00:21 98 0
2897489 이번달 적자네. 계산기 두들겨보니 [4] ㅆㅇㅆ(124.216) 00:16 55 0
2897488 ai에 대체되지 않을 직업을 찾지말고 사회주의 혁명이나 하십쇼 [5] 프갤러(110.8) 00:08 56 0
2897487 내생각엔 ai에 잡히지 않으려면 개발자따위는 때려치는게 맞음 박민준갤로그로 이동합니다. 00:07 39 0
2897486 자바스크립트 질문좀 받아주십쇼.. [4] 프갤러(210.101) 00:06 41 0
2897485 어셈블리어이전에 회로먼저아님? [2] ㅇㅇ(118.139) 00:06 35 0
2897484 달러 벌고 싶으면 러스트 배우십쇼 [1] 프갤러(110.8) 10.20 69 0
2897483 ai에 대체되지않을 it직업이 뭐가있을까 프갤러(39.117) 10.20 26 0
2897481 달러 벌고 싶다 [1] 에이도비갤로그로 이동합니다. 10.20 32 0
2897480 안녕하세요 c언어를 오래 배워보고 싶은 사람입니다. [15] ㅇㅇ(61.35) 10.20 105 0
갤러리 내부 검색
제목+내용게시물 정렬 옵션

오른쪽 컨텐츠 영역

실시간 베스트

1/8

디시미디어

디시이슈

1/2