본문 바로가기

전체 글

(270)
Verilog RTL 설계(7월 16일 - 1, PIPO Shift Register) 1. PIPO Shift Register (Parallel Input Parallel Output)병렬 형태로 데이터를 입력 받아 저장하고, 레지스터에 저장된 데이터를 병렬 형태로 출력받는 구조를 갖는 레지스터따라서 아래와 같이 게이트 레벨에서 회로를 구성할 수 있지만, 심각한 문제점을 갖는다.  문제점으로 지적되는 부분은 "WR 단자 값이 0일 경우, AND Gate으로 인해 Register를 구성하는 D Flip Flop의 입력값, D로 0이 들어가게 되고, 그 결과 Register에 저장되어 있던 데이터가 사라진다." 이다.따라서 문제점을 해결하기 위해서 " WR 단자 값이 1일 때는 외부로부터 데이터를 입력 받아 레지스터에 저장하고, WR 단자 값이 0일 때는 외부로부터 데이터를 입력 받지 않고,..
Verilog RTL 설계(7월 15일 - 4, PISO Shift Register) 1. PISO Shift  Register (Parallel Input Series Output)병렬 형태로 입력 값을 입력 받아 레지스터에 저장한 뒤, 레지스터의 저장된 데이터를 Shift시켜 직렬형태로 하나씩 출력시키는 구조를 갖는 레지스터PISO Shift Register는 아래와 같은 회로 구조를 갖는다. Q) 입력 단자 부분에 왜 MUX가 있으며, MUX는 어떤 역활을 수행하는가?A) PISO Shfit Register가 Read로 동작할 때와 Write로 동작할 때의 경우의 수로 나누어 생각해야한다.Write 로 동작할 경우)- 4bit 데이터를 한 번에 Parallel 형태로 입력받아야 한다.Read 로 동작할 경우)- 출력선 하나이기 때문에 D Flip Flop A부터 D Flip Flop..
Verilog RTL 설계(7월 15일 - 3, SISO Register, SIPO Register) 1. 4bit SISO Register에서 4번째 F/F부터 데이터 값, d를 Store 하는 SISO Shift Register4bit SISO Regster에서 마지막 Flip Flop부터 Store하게 된다.4bit SISO Register의 첫 번째 Flip Flop에서 Shift되어 데이터 출력되어 나온다.  module Reversed_SISO_Shift_Register_by_using_parameter_n #(parameter N = 8)( input clk, enable, reset_p, input d, output q ); reg [N-1 : 0] siso_reg; always @(negedge clk or posedge reset_p) begin..
Verilog RTL 설계(7월 15일 - 2, Register, TestBench) 1. Register는 D Flip Flop을 기반으로 구현 할 수 있다.D Flip Flop은 1bit 데이터를 저장할 수 있는 기억 소자이다.따라서 D Flip Flop을 병렬로 여러 개를 이어붙어 Register를 생성할 수 있다.아래 코드는 8개의 D Flop Flop을 병렬적으로 이어 붙어 8bit register를 생성할 수 있다. // 8bit registermodule Register_8bit_implemented_with_D_Flip_Flop_Positive( input clk, enable, reset_p, input [7:0] d, output reg [7:0] q ); always @(posedge clk or posedge reset_p) begin ..
Verilog RTL 설계(7월 15일 - 1, 오전 내용 복습) 1. Sequential logic circuit은 Combinational logic circuit와 Register (D Flip - Flop)의 조합으로 이루어진다.이전 게시글 통해 알 수 있듯이Sequential logic circuit은 Combinational logic circuit와 Register (D Flip - Flop)의 조합으로 이루어져 있음을 확인할 수 있다.Up / Down Counter = adder (조합 논리 회로) + D Flip FlopRing Counter = shift operator (조합 논리 회로) + D Flip Flop순차 논리 회로는 조합 논리회로와 레지스터의 조합으로 구성되어 있으며, FPGA에서는 "레지스터는 D Flip Flop"임을 의미한다. 2...
Verilog RTL 설계(7월 12일 - 6, Edge detector) flip_flop_current = cp;flip_flop_old = flip_flop_current;1. Verilog에서 동기순차회로를 설계할 때에는 Clock Pulse와 Reset만 Sensitive variable로 사용하고, 나머지 변수에 대해서는 Sensitive variable로 사용하지 않는다.PDT (Propagation delay time)은 신호 및 데이터가 회로를 통과하는데, 소요되는 시간을 의미한다.PDT 를 정확히 계산하는 것이 회로의 Timing과 성능을 결정 짓는 데, 중요한 요소가 된다.Clock Pulse와 Reset 신호는 동기화하고, 초기화하는데, 사용되는 특별한 신호이다. 따라서 이들 신호의 Timing은 예측이 가능하고, 제어도 가능하다. 하지만, 이를 제외한 나..
Verilog RTL 설계(7월 12일 - 6, 링 카운터) 1. Ring CounterRing 형태로 순환되는 Counter출력 값 중에서 하나의 비트 값만 1이고, 나머지 비트는 0을 갖게되며, 순차적으로 Shift되며 출력된다.Ring 형태로 순환되는 구조를 갖기 때문에 마지막 비트에서 다시 첫 번째 비트로 돌아 온다.n 개의 플립플롭을 갖는다면 n개의 서로 다른 상태를 갖는다.주로 순차적인 흐름 및 제어 필요한 시스템에서 사용된다.Verilog는 병렬적 처리를 하기 때문에 순차적인 처리를 설계하고 싶을 경우, 링 카운터를 사용한다.      2. Behavioral modeling of Ring Counter (Positive edge trigger)// Behavioral Modeling of Ring Countermodule Behavioral_Mode..
Verilog RTL 설계(7월 12일 - 5, 동기식 업/다운 카운터) 1. Synchronous Up Down Counter (Negative edge trigger)Up counter로 동작하며, Down Counter로서 동작할 수 있다. // Syncrhronous Up Down Counter implemented with D Flip Flopmodule Synchronous_Up_Down_Counter_Negative( input up_down, input clk, enable, reset_p, output reg [3:0] count ); // 0 : Up Counting, 1 : Down Counting always @(negedge clk or posedge reset_p) begin if(reset_p) coun..