Verilog 17

Vivado : Basys3 7segment

이번에는 Basys3을 사용하여 7-segment를 제어하고자 한다. 7-segment의 구조는 아래와 같다.  4개의 스위치를 활용하여 4bit 스위치 역할을 수행하며, 세그먼트를 제어할 예정이다. 따라서 코드의 초반에는 '[3:0] hex_value'와 같이 선언하였다. 세그먼트 제어는 직관적으로 변경을 할 것이며, 따라서 비트를 하나하나 선언하여 변경할 것이다.세그먼트를 제어할 때에는 1이 주어지면 LED는 점등을 하며, 0이 주어질 시 꺼지는 동작을 수행한다.  구현된 코드는 아래와 같다.module decoder_7seg( input [3:0] hex_value, output reg [7:0] seg_7); always @(hex_value)begin case..

Language/Verilog 2024.07.16

Vivado : Edge Detector, Shift Register(SISO, SIPO, PISO, PIPO)

Edge Detector Positive Edge Detector Positive 동작은 아래의 그림으로 설명된다.  Clock이 인가되며, cp의 값이 1이 되는 동안 Clock가 posedge일 때 Current는 1이 된다.Current가 1인 동안 Clock이 posedge 되는 순간 old는 1로 변경된다. Positive Edge detector의 코드는 아래와 같다.module edge_detector_p( input clk, reset_p, input cp, output p_edge, n_edge); reg ff_cur, ff_old; //flip flop current always @(posedge clk or posedge reset_p)begin ..

Language/Verilog 2024.07.16

Vivado : 동기식 카운터

Positive 업 카운터module up_counter_p( input clk, reset_p, enable, output reg [3:0] count); always @(posedge clk or posedge reset_p)begin if(reset_p)count=0; else if(enable)count=count + 1; end endmodule Vivado에서는 C언어와 같이 증감 연산자를 사용할 수 없기 때문에 count = count + 1과 같이 코딩한다. 시뮬레이션을 진행할 때, Reset 값에 1을 인가한 뒤 0으로 인가해주어야만 정상적인 동작을 수행한다.Reset을 하지 않으면, 그전에 어떤 값이 들어있는지 모르기 때문..

Language/Verilog 2024.07.12

Vivado : Decoder, Encoder

이번에는 Vivado를 활용하여 디코더와 인코더를 구현해보려고 한다. 디코더먼저 구현해 볼 디코더는 2X4 디코더이다. 2X4 디코더는 2bit의 입력과 4bit의 출력을 가진다.2X4 디코더를 구현할 코드는 아래와 같다.module decoder_2X4_b( input [1:0] code, output reg [3:0] signal); always @(code)begin if(code == 2'b00) signal = 4'b0001; else if(code == 2'b01) signal = 4'b0010; else if(code == 2'b10) signal = 4'b0100; else if(code == 2'b11) signal = 4..

Language/Verilog 2024.06.25

Vivado : 4bit 가산기

이번에는 전가산기 4개를 이어 붙인 4bit 가산기를 구현해보려고 한다. 전가산기에 관한 내용은 아래 글을 참고하여 확인할 수 있다. 2024.06.13 - [Language/Verilog] - Vivado : 전가산기(Full-adder) 구현 Vivado : 전가산기(Full-adder) 구현가산기가산기란, 덧셈 연산을 수행하는 논리회로를 의미한다. 가산기는 디지털 회로, 조합 회로의 하나이며, 대부분의 가산기는 2진수의 합을 나타내는 특징을 가진다. 전가산기전가산기는 두jangdong.tistory.com4bit adder4비트 가산기를 구현하기 위해서는 두 개의 입력을 받을 a, b 입력단자와 올림수를 표현할 Cin(carry in) 입력 단자를 필요로 한다.  아래는 Structural 기법을 ..

Language/Verilog 2024.06.16

Vivado : 전가산기(Full-adder) 구현

가산기가산기란, 덧셈 연산을 수행하는 논리회로를 의미한다. 가산기는 디지털 회로, 조합 회로의 하나이며, 대부분의 가산기는 2진수의 합을 나타내는 특징을 가진다. 전가산기전가산기는 두 개의 반가산기와 하나의 OR 게이트로 이루어져 있다. 전가산기는 이진수의 합뿐만 아닌 캐리까지 포함하여 동작을 수행하는 특징을 지닌다. 전가산기의 진리표는 아래의 표와 같다.XYZSumCarry0000000110010100110110010101011100111111 이제 Vivado를 활용하여 전가산기를 구현해 보도록 하자. 구현 방법은 Verilog의 Modeling 기법을 활용하여 구현하려고 한다. Verilog의 모델링 기법은 대표적으로 Structural, Behavioral 그리고 Dataflow 기법이 존재한다...

Language/Verilog 2024.06.13

Vivado : 논리 게이트 구현

※수업 시간에 배운 내용을 주관적으로 정리한 것으로, 순서나 내용이 다를 수 있습니다...!! 이번에는 Vivado를 활용하여 원하는 논리 게이트 동작을 구현할 것이다. 가장 첫번째로 and 게이트를 구현해보려고 한다. and 논리 연산자는 비교하는 두개의 값이 참일 때에만 참의 값을 내보내고, 그 외에는 모두 거짓값을 내보내는 특징을 지닌다. 즉, 하나라도 거짓이면 거짓을 내보내는 동작을 실행한다. 진리표로 표현하자면 아래와 같다.XY결과000010100111  and 게이트 동작을 위한 코드는 아래와 같다.module and_gate(input a, b,output reg q ); always @(a, b)begin case({a, b}) 2'b00:..

Language/Verilog 2024.06.12
728x90