Verilog 6

0~10까지 더하는 Dedicated Processor 설계하기

0~10까지 더하는 C언어 코드는 아래와 같습니다. 이를 blockdiagram으로 살펴보면 아래와 같습니다.i = 0, sum = 0 // 첫 번째 CLK각 mux에서 0을 선택해야 하므로 sumSrcMuxSel, iSrcMuxSel 전부 0을 줍니다   sumEn과  iEn에 1을 줘서 다음 CLK에 각 reg의 output으로 값이 나올 수 있게 해줍니다. 아직 reg의 output이 나오지 않으므로 adderSrcMuxSel은 dont care입니다. 아직 outport로 출력단계도 아니므로 OutBuf도 0입니다 while (i두 번째 CLK이 들어오자마자 i_reg의 output으로 값이 나오고 comparator에서 비교를 시작합니다. 추가로 reg의 out이 mux와 adder를 통과하게됩..

컴퓨터구조 2025.04.09

0~9까지 카운트하는 Dedicated Processor 설계하기

먼저 0~9까지 카운트하는  C언어 코드를 보겠습니다. 이 코드를 그대로 Data Path를 그리고 flow를 따라가보겠습니다.1. A = 0위는 전체적인 DataPath 그림입니다. Control Unit의 상태에 따라 DataPath의 Flow를 보겠습니다.a. 먼저 Control Unit에서 MuxSel = 0을 보내면 Data Path의 Mux에서 '0'을 내보냅니다.      b.그다음 Control Unit에서 En = 1을 보내면 register가 input의 '0'을 output으로 내보냅니다.(다음 CLK에)   c.reg의 output에서 나온  '0'은 비교기와 adder에 들어가게 됩니다. 비교기의 결과값은 Control Unit의 L10, Adder의 결과값은 Mux의 input으..

컴퓨터구조 2025.04.06

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 는 An,BnAn,Bn에 대응되고 sum은 SnSn, carry는 CoutCout, cin은 CinCin에 대응 됩니다. 이 full_adder를 인스턴스화 하여 4개를 가져오면 됩니다.지난번 코드에  input, output을 작성해서 코드를 추가했습니다. (노란색 부분) 아래와 같은 모듈을 만든 겁니다full adder를 인스턴스화 해서 4개를 만들어줍니다.위 그림은 인스턴스화 했을때 모듈의 모습입니다.인제 wire를 선언해서 인스턴스화 한 모듈들을 연결해줍니다.(탑모듈 내부안의 '인스턴스화된 모듈'끼리..

Verilog 2025.03.16