출처 : http://egloos.zum.com/pinge/v/2259784
처음 Verilog HDL 언어를 접하면서 가장 힘들었던 부분은 역시 wire 와 reg의 구분을 하는것..
wire = "선"
reg = "레지스터" 라고 우선 생각을 한다.
wire 는 실제 wire처럼 단지 어떤 모듈과 모듈을 이어주는 선에 불과하고 reg은 실제 레지스터처럼 어떤 신호에 영향을 받아 바뀌는 값이라고 생각함. 따라서 always문 안에서만 reg 값의 변경이 가능하고 wire값은 그 자체로 변경이 불가능하다. 단지 선을 연결하거나 and나 or등의 모듈로 나온 선을 잇는것만 가능할뿐..
ex ) reg와 wire를 이용한 2x4 Decoder.
2x4 Decoder 의 진리표
Input |
Output |
00 |
0001 |
01 |
0010 |
10 |
0100 |
11 |
1000 |
1) Reg 를 이용한 2x4 Decoder
in 신호를 Register값 변경 신호로 잡아 Reg값에 Decode된 값 입력
module Decoder2x4_byReg(in , out);
input[1:0] in;
output[3:0] out;
wire[1:0] in;
reg[3:0] out;
always @(in)
begin
if (in == 2'b00) out <= 4'b0001;
else if (in == 2'b01) out <= 4'b0010;
else if (in == 2'b10) out <= 4'b0100;
else if (in == 2'b11) out <= 4'b1000;
end
endmodule
2) wire를 이용한 2x4 Decoder
Not gate와 And gate를 이용한 단순 연결
module Decoder2x4_byWire(in, out);
input[1:0] in;
output[3:0] out;
wire[1:0] in;
wire[3:0] out;
assign out[0] = ~in[0] & ~in[1];
assign out[1] = in[0] & ~in[1];
assign out[2] = ~in[0] & in[1];
assign out[3] = in[0] & in[1];
endmodule
--------------------------------------------------
이렇게 구분하는 것이 정확하게 맞다고는 생각하지 않지만 처음 개념 잡을때는 필요한 부분이 있다.
wire 는 선이고, reg 는 값을 저장할 수 있다는 것 말이다.
'초보의 아웅다웅 설계하기 > Altera' 카테고리의 다른 글
Verilog simulation (0) | 2017.10.05 |
---|---|
Downloading ELF Process failed 에러 (0) | 2017.09.25 |
알테라에서 IP추가후 에러가 발생하는 문제 (0) | 2017.09.25 |
Altera 시뮬레이션 하기 (0) | 2017.05.11 |
ALTERA 프로젝트 만들기 (0) | 2017.05.06 |