[Harman] 세미콘(semiconductor) 아카데미-반도체설계/Verilog를 이용한 RTL 시스템 반도체 설계(10)
-
교통신호등 제어기 설계
교통신호등 제어기 설계 timescale 1ns / 1ps module TrafficLightController( input clk, reset, standby, test, output reg [6:0] FND, output reg G1en, Y1en, R1en, G2en, Y2en, R2en ); parameter YY=3'b000, RY=3'b001, GR=3'b010, YR=3'b011, RG=3'b100; // 상태에 대한 매개 변수 정의 reg [2:0] state=YY; // 현재 상태 레지스터 parameter RGTime=10, RYTime=3, GRTime=15, YRTime=3, TESTTime=2; // 각 상태의 지속 시간을 정의하기 위한 매개 변수 정의 integer TimeCnt..
2023.06.30 -
레지스터, 시프트 레지스터, 시프트 레지스터, up-down 카운터
레지스터 베릴로그에 의한 레지스터의 구현 방법 클럭이 있는 순차회로 = 플립플롭과 조합게이트로 구성 플립플롭이 없으면 조합회로만 구현 가능 플립플롭만 구성된 회로의 경우 조합논리게이트 없더라도 순차회로로 간주 플립플롭을 포함하고 있는 회로는 순차 회로라는 명칭 뿐만 아니라 수행하는 기능에 의해 레지스터와 카운터로 분류 레지스터 = 플립플롭들로 구성되며 각 플립플롭은 클럭을 공유하고 한 비트의 정보를 저장 가능 n비트 렞니스터는 n개의 플립플롭으로 구성되고 n개의 비트를 가지는 2진 정보를 wjwkd 카운터 입력이 가해짐에 따라 상태를 미리 정해진 순서대로 진행시키는 레지스터 카운터의 게이트는 레지스터에서 2진상태를 정해진 순서대로 만들어둔 것 래치 임시저장장소의 한 종류로서 두 개의 안정 상태를 가지고 ..
2023.06.23 -
리플 가산기
`timescale 1ns / 1ps module RippleCarryAdder( input [3:0] a, input [3:0] b, output [3:0] sum, output [3:0] c ); HalfAdder HA1(a[0], b[0], sum[0], c[0]); FullAdder FA2(a[1], b[1], c[0], sum[1], c[1]); FullAdder FA3(a[2], b[2], c[1], sum[2], c[2]); FullAdder FA4(a[3], b[3], c[2], sum[3], c[3]); endmodule module HalfAdder( input a, input b, output sum, output carry ); assign sum = a ^ b; assign car..
2023.06.22 -
FND, 가산기, 감산기
BASYS3의 [W4 V4 U4 U2]는 P타입 BJT이므로 BASE에 LOGIC 0을 줘야 PNP BJT가 도통되어 FND에 신호가 인가된다. EXAMPLE3 `timescale 1ns / 1ps module clockDivider( input clk, input reset_n, output reg clk100Hz ); reg [25:0] cnt = 0; always @(posedge clk or negedge reset_n) begin if(!reset_n) begin cnt
2023.06.16 -
FND&디코더
우리가 사용하는 보드(BASYS3)의 FND는 4개 존재 이 FND를 개별로 사용하려면 counter를 이용하여 각각 다른 시간의 값을 FND에 부여해야 개별로 사용가능 Clock Div -> Counter -> MUX -> Decoder & FND EXAMPLE 1 `timescale 1ns / 1ps module FNDSEL( input clk, input [1:0] fndselin, output reg [3:0] out ); always @ (posedge clk) begin case (fndselin) 2'b00 : out = 4'b1110; 2'b01 : out = 4'b1101; 2'b10 : out = 4'b1011; 2'b11 : out = 4'b0111; endcase end endmod..
2023.06.15 -
7-세그먼트 디코더, 크기 비교기
7-세그먼트 디코더 하나의 7-세그먼트에서는 한 자리 16진수 출력이 가능. 그러나 FPGA에서 16진수를저장하기 위한 비트의 크기는 4비트이며, 4비트에 저장된 수를 7-세그먼트로 출력하기 위해서는 디코딩 과정이 필요 -> 4비트에 저장된 하나의 16진수를 7-세그먼트에 출력하는 디코더 설계 스위치로 입력된 값을 16진수로 7-세그먼트에 출력되도록 설계 스위치에 입력된 키 값은 signal seg에 저장되고, case~when에서 seg에 저장된 값에따라 7-세그먼트에 출력할 값을 지정 → 스위치 인코더에 디코딩을 실행하는 프로세스 추가 module fnd_decoder( input clk, //clk input [3:0] a, b, //fnd input 2select output reg [6:0] F..
2023.06.09