본문 바로가기

반응형

전체목록

(127)
[Verilog HDL] 10. task를 이용한 shifter 설계 이번 장에서 배울 것 task barrel shifter 앞장에서 배운 function과 비슷한 기능을 하는 것이 task이다. function과 마찬가지로 여러개의 code를 묶어서 함수 호출하듯이 불러 쓸 수 있다. 그러나 task문에서는 delay문을 기술할 수 있다. 우선 이번 장에서 설계할 shiter에 대해서 알아보자. shifter는 여러 bit로 구성 된 입력을 원하는 bit 수 만큼 좌/우로 이동 시키는 것을 말한다. 예를 들어 4'b0100을 입력으로 받아 오른 쪽으로 2bit 이동 시키면 4'b0001이 된다. 또는 왼쪽으로 2bit 이동 시키면 4'b0000이 된다. bit 수를 넘어가면 그 값은 사라지게 된다. verilog에서 이런 기능을 하는 shift 연산자가 있는데 오른 쪽..
[Verilog HDL] 9. Function 을 사용한 뺄샘기(Subtractor) 설계 * 이 장에서 배우는 것 function clock gating enable 이번에는 verilog function block을 사용하여 뺄셈기를 설계해 보자. function block은 C언어에서의 함수와 같이 특정 코드 블록을 모아 호출할 수 있는 기능을 제공해 준다. verilog에서는 주로 조합회로를 구현 하기 위해 사용한다. 특정 조합회로를 function으로 구현하면 같은 기능을 필요로 하는 곳에 중복해서 코딩을 할 필요 없이 function을 호출하면 된다. 뺄셈기의 기본 설계 개념은 시퀀셜 가산기와 동일하다. 아래는 완성된 뺄셈기 코드이다. module subtractor ( input clock, input resetn, input en, input wire [7:0] a, input ..
[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; ..
[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로 선언할 경우를 생각해 보자. 변수 ..

반응형