본문 바로가기

전체 글623

(260105) verilog /tb 연습 예제 프로그램 전체 요약이 프로그램은 다운 카운터 타이머 3개를 동시에 동작시켜서, 가장 먼저 완료되는 타이머를 확인하는 시뮬레이션입니다.핵심 동작 순서타이머 3개 생성timer_a: 10 클럭 카운트timer_b: 15 클럭 카운트timer_c: 20 클럭 카운트리셋 수행 (시간 10~30)모든 타이머를 초기값으로 설정시간 50에 타이머 시작enable=1로 설정하여 3개 타이머 동시 시작각 타이머는 클럭마다 1씩 감소가장 빠른 타이머 완료 감지timer_a가 10 클럭 후 제일 먼저 완료 (시간 150)"done_a" 메시지 출력 후 시뮬레이션 종료 module timer #( //part2 ch6 clip5, answer parameter N=10 )( input clk, rstn, input enabl.. 2026. 1. 5.
(260105) verilog /tb 연습 예제 event /카운팅 등등 프로그램 전체 요약이 프로그램은 다운 카운터 타이머 3개를 동시에 동작시켜서, 가장 먼저 완료되는 타이머를 확인하는 시뮬레이션입니다.핵심 동작 순서타이머 3개 생성timer_a: 10 클럭 카운트timer_b: 15 클럭 카운트timer_c: 20 클럭 카운트리셋 수행 (시간 10~30)모든 타이머를 초기값으로 설정시간 50에 타이머 시작enable=1로 설정하여 3개 타이머 동시 시작각 타이머는 클럭마다 1씩 감소가장 빠른 타이머 완료 감지timer_a가 10 클럭 후 제일 먼저 완료 (시간 150)"done_a" 메시지 출력 후 시뮬레이션 종료 module tb_timer; reg clk, rstn; event timer_start; reg enable; timer #(.N(10)) timer_a(c.. 2026. 1. 5.
(260105) verilog연습/ tb에서 fork-join/event-wait/force-release/ 등 연습문제 간단한 예제 실행module tb; int fin, fout; reg [255:0] text;initial begin fin = $fopen("file_in.txt" ,"r"); fout = $fopen("file_out.txt","w"); $fscanf(fin,"%s",text); $fdisplay(fout,"%s",text); $display("%s",text); $fclose(fin); $fclose(fout); end reg [ 7:0] mem_8bit [7:0]; reg [15:0] mem_16bit[3:0]; reg [ 3:0] mem_4bit [7:0]; initial begin $readmemh("8bit.mem" ,mem_8bit ); $readmemh("16bit.mem",mem_1.. 2026. 1. 5.
(260104) verilog연습/ 신호등 만들기/ Verilog FSM으로 구현한 신호등 제어기프로그램 개요이 프로그램은 **유한 상태 기계(FSM, Finite State Machine)**를 이용하여 신호등을 제어하는 디지털 회로입니다. RED → YELLOW → GREEN 순서로 자동으로 전환되는 신호등 시스템을 Verilog로 구현했습니다.module tb; reg clk, rstn; wire red,yellow,green; initial begin clk = 0; forever #5 clk = ~clk; end initial begin rstn = 1; #10 rstn = 0; #20 rstn = 1; end initial begin $dumpfile("wave.vcd");.. 2026. 1. 4.
(260103) (verilog 연습)무어머신과 밀리머신 차이/ 2026. 1. 3.
(260103) verilog 연습/ - 시계 - behavior modelling 연습 문제 시계 만들기 / 실제로 1초마다가 아니라 10ns마다 초가 변하는 구조임/module watch( input clk, rstn, output reg [3:0] hour, output reg [5:0] minute, seconds); always @(posedge clk, negedge rstn) if(!rstn) seconds else begin if (seconds == 59) seconds else seconds end always @(posedge clk, negedge rstn) if(!rstn) minute else begin if (minute == 59 && seconds ==59) minute e.. 2026. 1. 3.
(260103) verilog 연습/ - 카운터 - behavior modelling 연습 문제 카운터 연습 코드 상세 설명이 코드는 N-비트 업/다운 카운터입니다.clock이 들어오는 것을 카운팅하는 프로그램/ rstn=0이면 counting이 리셋된다/ i_reverse=0이면 카운팅을 증가시키고 1이면 카운팅을 감소시킨다. N은 카운트의 비트수이고, 기본이 4bit이다.즉, rstn = 0일 때 → 카운터를 0으로 초기화 i_reverse = 1일 때 → 카운터 1씩 감소 (15→14→13...) i_reverse = 0일 때 → 카운터 1씩 증가 (0→1→2...)주요 구성 요소:파라미터 N = 4: 카운터의 비트 수 (0~15까지 카운트)입력 신호:clk: 클럭 신호rstn: 리셋 신호 (active-low, 0일 때 리셋)i_reverse: 방향 제어 (1=감소, 0=증가.. 2026. 1. 3.
(260102) Verilog/ Modeling Practice Stimulus는 "설계한 회로가 제대로 돌아가는지 보려고 가상의 입력값들을 순서대로 넣어주는 행위"이며, 이를 위해 작성하는 코드를 Testbench라고 합니다.1. gate level// Code your design here module adder_gatelevel( input [1:0] a, b, output [1:0] sum, output carry_out ); // 중간 아웃풋(임시 선로) 정의: 각 게이트 사이의 연결점 wire and1_out, xor3_out, and2_out, and3_out; // Bit 0 계산 (Half Adder 구조) xor (sum[0], a[0], b[0]); and (and1_out, a.. 2026. 1. 2.
(260102) verilog 연습_ Gate Level Modeling/ 1. gate-level 예제- 첫번째가 아웃풋, 두 번째부터가 인풋/- wire : 임시 선로의 이름 지정./ '임시 선로' 혹은 **'내부 신호(Internal Signal)설계를 시작할 때 이 '중간 아웃풋(임시 선로)'들의 이름을 먼저 정해주고(wire 선언), 그 이름들을 사용해 게이트들을 차례대로 조립해 나가는 것이 Gate-level 모델링의 기본 순서입니다.이 방식은 회로가 복잡해질수록 이름 붙이기가 매우 힘들어집니다.module mux_gatelevel( input a, b, input A, B, C, D, output Q ); wire a_not, b_not; wire A_pick, B_pic.. 2026. 1. 2.
(260102)_verilog 기본 문법 및 개념 variable : biegin - end로 끝나는 곳 안에. 변수로 사용. 인스턴스화 관련 예제 실습module testbench; reg in_a, in_b; wire out_and, out_or, out_xor; initial begin {in_a,in_b} = 'b00; #10 {in_a,in_b} = 'b01; #10 {in_a,in_b} = 'b10; #10 {in_a,in_b} = 'b11; #10 $finish; end initial begin $dumpfile("test.vcd"); $dumpvar.. 2026. 1. 2.
(260102)_verilog 2/waveform 만드는 법 module dump_example; //part2 ch3 clip2 (2), ppt reg a, b; initial begin a=0; b=0; #10 a=1; b=0; #10 a=0; b=1; #10 a=1; b=1; $finish; end initial begin $dumpfile("dump_example.vcd"); $dumpvars(1, dump_example); $display("test dump"); end endmodule 2026. 1. 2.
(260102) verilog 기본 1/ print하는 법 Verilog의 정의 및 용도 하드웨어 기술 언어(HDL): 반도체(HW)를 설계하기 위해 사용하는 언어입니다. 디지털 시스템 설계: 주로 복잡한 동작이 필요한 시스템 반도체와 같은 디지털 회로 설계에 사용됩니다. 아날로그 설계가 회로도(Schematic)를 직접 그린다면, Verilog는 코드로 회로를 묘사합니다.주요 특징병렬 실행 (Parallel): C언어 같은 소프트웨어 언어는 코드가 한 줄씩 순서대로 실행되지만, Verilog는 모든 코드가 매 클럭마다 동시에 처리됩니다. 계층 구조 (Hierarchical): 모듈(Module)이라는 단위로 설계를 쪼개고 이를 쌓아 올리는 구조를 가집니다. 예를 들어 '컴퓨터'라는 상위 모듈 안에 'CPU', 'SSD', 'DRAM' 같은 하위 모듈들을 배치하.. 2026. 1. 2.
(260101) Sequential Logic의 개념/ 색깔 표기S=0, R=0일 경우, Q는 불변 / Hold S=0, R=1, Q=0S=1. R=0, Q=1 S=1, R=1, not allowedGated SR Latch/ E-0 holding이면 holding 하고, E=1이면 SR latch 역할을 한다. Gated D LatchD=1일때 Set/ D=0일 때 Reset/참조)NAND GATE 로직// 한 쪽이 1이면 결과는 not 이 나오는 구조// Clock=0 일때에 유지된다. Data로 들어오는 값도 전혀 끼어들 구석이 없다.Clock=0에서 Clock=1로 변화시. 이제 Clock=1인 상태에서 Data 변화가 변화했을 경우를 살펴 보자. Data가 0 --> 1, 1-->0 이라도 변화가 없다. 그럼 언제 변화할까? clock이 0.. 2026. 1. 1.
(260101) 조합회로 _ 조합회로는 TIME-INDEPENDENT 한 로직이다.기본 게이트 NOT gate는 CMOS로 만들수 있음/NAND 게이트가 기준/ 반도체의 면적을 나타내는 것을 게이트 카운트 라고 하는데 이것은 NAND가 기준/ 2026. 1. 1.
251225/ 베릴로그란 하드웨어 기술 언어(HDL)로서의 Verilog 특징가장 중요한 포인트는 Verilog는 소프트웨어 언어(C/C++)와 근본적으로 다르다는 점을 이해하는 것입니다. 8 구분C/C++ (Software)Verilog (Hardware)실행 방식각 줄이 **순차적(Sequential)**으로 실행됨. 9 매 사이클마다 각 줄이 동시에(Parallel) 처리됨. 10 결과물명령에 따른 동작(Action) 수행. 11 실제 물리적인 **회로(Circuit)**로 구현됨. 12 시간 개념시간 흐름보다 실행 순서가 중요함.클럭(Clock)과 사이클 기반으로 결과가 산출됨. 13 계층 구조: Verilog는 모듈(Module) 단위를 쌓아 올리는 **계층적 언어(Hierarchical Language)**로, 마치 .. 2025. 12. 25.