Verilog 4

Verilog - CLK divider

이번에는 3 basys board에서 제공하는 100MHz clk을 이용해 더 낮은 clk인 10Hz clk을 만들어 보겠습니다.input으로는 clk과 reset을, output으로는 더 낮은 CLK인 o_clk을 선언 해줍니다.100MHz CLK으로 10Hz CLK을 만들기 위해선 100MHz CLK이 10M개 의 파형을 띄울 때마다  o_clk을 1로 띄웠다가 0으로 만들어 주면 됩니다. 아래는 전체 코드입니다. 10M개의 파형의 개수를 세어야 하므로 parameter로 FCOUNT를 선언해주고 10_000_000으로 초기화 해줍니다. FCOUNT(10_000_000)만큼의 파형 개수를 세어야 하므로 노란색으로 강조한 부분처럼 r_counter를 선언해줍니다.always구문 안에서는 output이 ..

Verilog 2025.03.20

Verilog - 4bit full adder testbench

지난번에 마든 4bit_full_adder를 testbench를 돌려서 제대로 돌아가는지 확인하겠습니다.  tb 모듈(tb_4bit_full_adder)을 만들어줍니다.tb 모듈에는 input, output port가 존재하지 않습니다. tb모듈 밖에서 값이 들어오는 것이아니라tb 모듈 내부에서 값을 생성할 것이기 때문입니다.테스트를 위해 지난번 만든 fourbit_full_adder를 인스턴스화해줍니다.인스턴스화한 모듈의 input 부분은 reg를, output 부분은 wire를 선언해서 연결해줍니다.  ※input을 reg로, output을 wire로 선언하는 이유 : 테스트벤치를 작성할 때 저희는 input에 직접 여러 값을 넣어서 바꿔줘야하고 그로 나온 output을 확인할 겁니다.reg는 값을 ..

Verilog 2025.03.16

Verilog - 4bit full adder

지난번에 만든 1bit full adder를 이용해 4bit full adder를 만들어보겠습니다. 구조는 아래와 같습니다.지난번에 만든 1bit full adder와 비교하면x,y 는 $A_{n}, B_{n}$에 대응되고 sum은 $S_{n}$, carry는 $C_{out}$, cin은 $C_{in}$에 대응 됩니다. 이 full_adder를 인스턴스화 하여 4개를 가져오면 됩니다.지난번 코드에  input, output을 작성해서 코드를 추가했습니다. (노란색 부분) 아래와 같은 모듈을 만든 겁니다full adder를 인스턴스화 해서 4개를 만들어줍니다.위 그림은 인스턴스화 했을때 모듈의 모습입니다.인제 wire를 선언해서 인스턴스화 한 모듈들을 연결해줍니다.(탑모듈 내부안의 '인스턴스화된 모듈'끼리..

Verilog 2025.03.16

Verilog - 1bit Half Adder, Full Adder (인스턴스화)

Half Adder1bit a와 b를 받아서 addsum과 carry 발생 진리표 a     b     |    s      c_______|________0     0     |    0      00     1     |    1      01     0     |    1      01     1     |    0      1 s = a^b  (a xor b)c = a&b (a and b)  코드Full Adder1bit a와 b그리고 cin(carry)를 받아서 addsum과 carry 발생 진리표cin    a     b     |    s      c___________|________0      0     0     |    0      00      0     1     |    1   ..

Verilog 2025.03.09