본문 바로가기

verilog HDL

[Verilog HDL] random / blocking, non-blocking $random : 32bit signed random value // % value (value 미만의 값 출력) $urandom : 32bit unsigned random value // % value (value 미만의 값 출력) $urandom_range(min_value, max_value) ex) reg [31:0] random always @ (posedge clk or negedge rstb) if(!rstb) random 더보기
[Verilog HDL] 실습2 FSM module traffic_fsm (nRST, CLK, RO, GO, LO, YO); input nRST, CLK; output RO, GO, LO, YO; reg RO, GO, LO, YO; parameter RED = 0; parameter GRN = 1; parameter LEF = 2; parameter YEL = 3; reg state_en; reg [4:0] state_cnt; reg [1:0] CS_state; // current state reg [1:0] NS_state; // next state // state enable counter always@(negedge nRST or posedge CLK) if(!nRST) state_cnt 더보기
[Verilog HDL] shift module shifter1 (A, B, Y); input [7:0] A; input [3:0] B; output [7:0] Y; assign Y = A 더보기
[Verilog] F/F or Counter F/F 두 개의 안정된(bi-stable) 상태 중 하나를 가지는 1비트 기억소자 플립플롭과 래치도 게이트로 구성 조합 논리 회로와 달리 궤환(feed back)이 존재 래치 회는 근본적으로 플립플롭과 유사한 기능을 수행 - NOR 래치 회로 - NAND 래치 회로 - D F/F 클록형 RS ff에서 원하지 않는 상태(S=R=1)를 제거하는 한 가지 방법 클록형 D 플립플롭(clocked d ff)은 클록형 RS 플립플롭을 변형한 것 입력신호 D가 CP에 동기되어 그대로 출력에 전달되는 특성을 가지고 있음 데이터를 전달하는 것과 지연하는 역할에서 유래 - JK F/F SR 플립플롭에서 S=1, R=1 인 경우 출력이 불안정한 상태가 되는 문제점을 개선하여 S=1, R=1에서도 동작하도록 개선한 회로 JK.. 더보기
[Verilog] Task / Function task 다른 task나 function을 사용할 수 있음 non - zero 시뮬레이션 시간에 수행될 수 있음 지연, 사건 또는 타이밍 제어 문장을 포함할 수 있음 ( #, assign ) input, output 또는 inout을 하나도 가지지 않거나 다수를 가질 수 있음 값을 되돌릴 수 없지만 input과 output을 통해 여러 개의 값을 전달할 수 있음 #SV static / automatic module, interface, program, package에 정의된 task는 기본적으로 static class 내에 선언된 task는 항상 automatic ex) tb_ initial begin display(); #1; display(); #1; display(); #1; end task dis.. 더보기
[Verilog] Behavior modeling 설계 Decoder 입력선에 나타나는 n비트의 2진 코드를 최대 2의 n승 개의 서로 다른 정보로 바꿔주는 조합 논리 회로 Enable 단자를 가지고 있는 경우는 디멀티플렉서의 기능도 수행 실제 사용 IC의 경우 디코더와 디멀티플렉서의 기능으로 모두 사용 - AND게이트 입력 출력 a1 a0 y3 y2 y1 y0 0 0 0 0 0 1 0 1 0 0 1 0 1 0 0 1 0 0 1 1 1 0 0 0 - NAND게이트 입력 출력 a1 a0 y3 y2 y1 y0 0 0 1 1 1 0 0 1 1 1 0 1 1 0 1 0 1 1 1 1 0 1 1 1 Encoder 디코더의 반대 기능을 수행하는 장치 2의 n승 개의 입력 신호로부터 n개의 출력 신호를 만듦 2의 n승 개 중 활성화된 하나의 1비트 입력 신호를 받아서 그.. 더보기
[Verilog] Behavior modeling 설계자가 알고리즘적 방법으로 설계 기능 기술 가능 회로의 행위 묘사 가능 최상위 추상화 수준에서 회로 표현 디지털 설계의 복잡도에 따라 구조적인 평가 시 사용 C프로그래밍 언어와 많은 면에서 유사 구조적 프로시저 절차적 할당 타이밍 제어 조건문 다중 분기 루프 순차 처리와 병렬 처리 블록 - 구조적 프로시저 initial문 / always문 verilog는 병렬적으로 수행되는 프로그래밍 언어 initial, always문이 분리되어 수행 → 각 수행은 시뮬레이션 시간 0에서 시작 initial,always 중첩 불가 ▶initial문 시간 0에서 시작 일반적으로 초기화, 모니터링, 파형에 사용 시뮬레이션 동안 한번만 수행 여러 개의 initial 블록 존재 시 시간 0에 동시 수행 여러 개의 행위 수준 .. 더보기
[Verilog] Data flow modeling 데이터 플로우 모델링 이해 레지스터들과 데이터 처리방법 간의 설계가 가능 기능 중심의 구현 방법 논리합성(데이터 플로우 수준의 설계를 게이트 수준의 설계로 생성) 기법이 있기 때문에 게이트 수준의 모델링보다 데이터 플로우 모델링으로 쉽게 설계 RTL은 데이터 플로우 모델링과 행위 수준 모델링을 합친 기법 연속 할당문 하나의 값을 net에 할당 assign=; 특징 왼쪽은 항상 스칼라나 벡터의 net, 또는 스칼라 net과 벡터 net으로 합쳐진 것 오른쪽 피연산자들의 값이 바뀌자마자 왼쪽의 net에 값을 할당 연산자의 오른쪽에 올 수 있는 것은 레지스터 또는 net 또는 함수 호출문 할당 문 안에서 지연값을 넣어줄 수 있으며, 시간은 단위 시간으로 지정 - 정규 할당 지연 연속 할당문에 지연되는 값을 직.. 더보기