본문 바로가기

반응형

전체목록

(125)
[Verilog HDL] 8. 순차논리 (Sequential Logic) Adder 설계 앞에서 배운 DFF 설계 기법을 활용하여 clock에 동기되어 동작하는 adder를 설계해 보자. 우선 완성된 source code는 아래와 같다. module adder_seq ( input clock, input resetn, input [7:0] a, input [7:0] b, output reg [7:0] y ); reg [7:0] sum; always@(*) begin sum = a+b; end always @(posedge clock or negedge resetn) begin if (!resetn) y
KiCAD를 이용한 전자회로 시뮬레이션 : 2. 트랜지스터(BJT) 먼저 프로젝트를 생성하고 스케메틱 에디터를 실행 시킵니다. 여기서는 KiCAD 6.0을 사용합니다. KiCAD 6.0을 설치하면 메뉴는 자동으로 한글로 설정됩니다. 다운로드 디렉토리는 아래를 참조하시기 바랍니다. (windows용) https://www.kicad.org/download/windows/ Windows Downloads Downloads KiCad for Windows 8.1, Windows 10 and Windows 11 www.kicad.org kicad를 실행 시키고 파일/새 프로젝트 메뉴을 클릭합니다. 아래와 같이 원하는 디렉토리 아래에 프로젝트 폴더를 만들고 프로젝트 이름을 입력합니다. 그러면 아래와 같이 회로도 편집기와 PCB편집기 파일이 생성됩니다. 회로도 편집기는 프로젝트 화..
[Verilog HDL] 7. 순차논리 (Sequential Logic) 회로 설계 (D F/F) 앞에서는 adder를 조합 회로로 구현하였다. 이번에는 clock에 동기 되는 순차 논리 회로로 adder를 설계해 보겠다. 앞장에서 설명하였듯이 순차 논리 회로는 현 상태를 저장할 수 있는 회로이다. 순차 논리 회로 adder를 만들기 전에 순차 논리 회로의 기본이 되는 D flip-flop에 대해 알아보자, 디지털 회로에서 1bit의 정보를 저장하는 기본 회로는 D flip-flop이다. D flip-flop은 clock edge에서 동작하고 입력 값을 clock 에 동기시켜 그대로 출력한다. reset이 있는 flip-flop은 reset이 active인 구간에서 flip-flop의 출력을 0이나 1로 고정시킨다. 여기서 active라고 하는 것은 reset신호가 1일 때 유효한가 0일 때 유효한가..
[Verilog HDL] 6. Simulation Tetstbench까지 만들었으면 simulation을 진행 할 수 있다. iverilog가 설치 되어 있으면 아래와 같은 명령으로 simulation을 수행한다. >>iverilog adder.v test.v 위의 명령을 실행하고 디렉토리 리스트를 보면 a.out 라는 실행 파일이 생성된 것을 볼 수 있다. 이를 실행 시키면 아래 그림 처럼 a,b,y에 대한 값이 정상적으로 출력 되는 것을 볼 수 있다. iverilog 실행 시 출력으로 생성되는 실행 파일의 이름을 지정할 수 있는데 아래와 같이 하면 된다. iverilog -o test_adder adder.v test.v 이렇게 하면 a.out이 아니라 test_adder라는 이름의 실행 파일이 생성되고 마찬가지로 이를 실행 시키면 simulatio..
[Verilog HDL] 5. Testbench module 설계가 끝나면 원하는 동작을 하는지 검증해야 한다. 이를 위해 적당한 입력을 가하고 출력을 모니터 해서 검사하는 코드를 만들어야 하는데 이를 testbench 라고 한다. Testbench는 검증하고자 하는 기능에 따라 여러가지 형태로 코딩할 수 있는데 사용자가 입력을 명시적으로 정의하여 테스트 하는 기법을 direct test라고 하고 입력을 랜덤하게 정의하여 사용하는 것을 random test라고 한다. 일단은 기본적인 direct test의 한 가지 예를 아래에 코딩하였다. `timescale 1ns/1ps // time unit / time resolution --------------(1) module test; // module name reg [7:0] a, b; // reg t..
[Verilog HDL] 4. Adder 설계 앞서 module장에서 adder module의 간략한 형태를 살펴 보았다. adder는 2개의 8bit 입력 A,B를 받아 더해서 8bit 출력 Y로 출력한다. 실제 더하기 기능을 수행 하는 회로를 verilog로 coding 해 보자. verilog에서 더하기 기능에 해당하는 연산자는 +이다. 이 외에 산술 연산을 수행하는 연산자는 C언어와 동일하다. 일단 출력 Y로 결과 값을 출력하기 위하여 출력 값을 저장하는 변수를 선언하여야 한다. 지금 만드는 회로는 cominational logic으로 가정하고 설계한다. 이 때 더하기 결과 값을 sum이라는 변수에 저장한다고 하면 sum이란 변수의 data type을 wire나 reg로 선언할 수 있다. 첫번재로 wire로 선언할 경우를 생각해 보자. 변수 ..
[Verilog HDL] 3. Combinational Logic/Sequential Logic 1. Combinational Logic 입력 신호가 변하면 출력 신호가 바로 변하는 논리 회로이다. 실제 물리적으로는 게이트 지연 시간과 net의 지연 시간이 포함된 지연 시간 이후에 출력 신호가 변하게 된다. 일반적으로 NAND, NOR등 논리 게이트의 조합 회로를 말한다. 아래는 cominational logic의 예이다. A,B,C 입력을 통과한 신호는 각 논리 게이트 조합으로 구성된 회로를 통과하여 Y로 출력된다. 출력에서 입력으로 되돌아 가는 피드백 path가 없고 어떤 상태를 저장하지도 않는다. 단지 입력의 변화만이 출력의 변화를 결정한다. 2. Sequential Logic 현재 상태 값을 저장해두고 그 상태 값이 다시 입력으로 피드백 되어 다음 상태와 출력을 결정하는 회로이다. 즉 저장 ..
[Verilog HDL] 2. Module module은 하드웨어 기능을 구현하는 기본 단위이다. module은 입력 port를 통하여 입력 신호를 받고 이를 처리하여 출력 port를 통하여 module 외부로 출력한다. 아래는 기본적인 module의 구조이다. module adder // adder는 module의 이름 ( input wire [7:0] A, // 8bit 입력 port input wire [7:0] B, // 8bit 입력 port output wire [7:0] Y // 8bit 출력 port ); /* ..... 기능 구현 부분 */ endmodule // module의 마지막 'module'이라는 keyword 뒤에는 항상 module name이 와야 한다. 그리고 괄호 안에 입/출력 port를 정의한다. 여기에 입/출력..

반응형