no image
[Verilog] 5. FSM Demo.
FSM(Finite State Machine)  FSM, 즉 유한상태머신은 지정된 수의 상태 변화에 따라 출력을 조절하는 머신입니다.input과 현재상태에 따라 output을 출력하는 Next state logic, 현재 상태를 저장하는 State Register, 입력과 현재상태에 따라 출력을 선택하는 Output Logic으로 구성됩니다. 저는 Switch와 LED를 통해 입력과 출력의 변화를 확인하도록 코드를 작성할 것입니다.FSM Code`timescale 1ns / 1psmodule my_fsm( input RST, input CLK, input [1:0] SWT, output reg [1:0] LED, output VCC //output GND ); ..
2024.04.26
no image
[Virtouso] CMOS Inverter(NOT Gate)
CMOS Inverter(NOT Gate)NOT Gate는 아래와 같은 회로로 구성됩니다.위에는 pMOS 아래에는 nMOS를 배치하여 입력을 반전시켜 출력합니다.A에 0을 입력하면 pMOS는 On, nMOS는 OFF 됩니다. 따라서 출력단인 Y와 VDD가 연결되기 때문에 1로 출력됩니다.A에 1을 입력하면 pMOS는 OFF, nMOS는 ON 됩니다. 따라서 출력단인 Y와 GND가 연결되기 때문에 0으로 출력됩니다.Inverter의 심볼과 진리표입니다.이제 위의 회로를 Cadence Virtuoso를 이용하여 구성하겠습니다. Virtuoso 먼저 위의 회로도와 같게 pMOS와 nMOS를 배치하고 입력으로 VIN, VDD, VSS를 구성합니다.나오는 출력은 VOUT으로 잡았습니다.(pMOS의 W가 2.91u..
2024.04.25
no image
[OrCAD] 0. Pspice 프로젝트 생성
Pspice 오늘은  OrCAD Pspise 프로젝트 생성 방법에 대해 말씀드리겠습니다.우선 Capture CIS Lite 프로그램을 설치 후 실행합니다. 여기서 프로젝트로 가지 않고 Start page 우클릭 후 Close 해줍니다.상단 메뉴에서 'File' 'New' 'Project'를 사용하여 새 프로젝트를 생성합니다.상단에는 프로젝트 이름과 하단에는 저장 위치를 지정해 줍니다.시뮬레이션 기능을 이용한다면 가장 위에 위치한 'PSpice Analog or Mixed A/D'를 선택합니다.도면만 제작한다면 'Schematic'을 이용하여 작성할 수 있습니다.이름과 파일경로에는 영어, 숫자, _(언더바)만 가능합니다. 이외의 한글이나 특수문자 등이 들어간다면 오류가 발생할 수 있습니다.빈 프로젝트를 생..
2024.04.03
no image
[Verilog] 4. 1 Sec Counter- (Cora-z7)
1Sec Counter 설계설계 요구사항- RST = 1일 경우 LED off, RST = 0일 경우 1초 마다 LED on/off- 내부 counter를 설계하여 1초마다 enable 되는 신호 생성 enable 신호를 이용하여 출력을 반전 시키는 회로 설계  `timescale 1ns / 1ps//////////////////////////////////////////////////////////////////////////////////module my_1sec( input RST, input CLK, output reg LED ); parameter clk_freq = 125_000_000;reg enable;reg [31:0] cnt;always @(posedge CL..
2024.04.01
no image
[Verilog] 3. Counter / Testbench- (Cora-z7)
Counter 설계설계 요구사항- CLK의 상승 Edge마다 up_down 신호가 High면 내부 32bit Counter가 증가, Low면 감소- 상위 3bit를 LED를 활용하여 출력 동작 확인`timescale 1ns / 1psmodule my_count( input RST, input CLK, input DIR, output [2:0] LED ); reg [31:0] cnt; //32bit register로 cnt 값 저장 assign LED = cnt[31:29]; // cnt의 상위 3 bit LED 출력으로 할당 always @(posedge CLK) // CLK 의 신호 상승 Edge가 감지될 때마다.begin if(R..
2024.04.01
no image
[ATmega 128] 3. 7 Segment 타이머 만들기.
자주 보던 디지털 시계, 이것을 7 Segment라고 합니다. 자릿수에 따라 7개의 Segment 표시 장치가 존재하기 때문입니다.7 Segment7 Segment는 양극형, 음극형으로 나뉩니다.또한 Segment 사용을 위해서는 위와 같은 제어값을 활용하여 값을 출력할 수 있습니다.     위와 같이 회로를 구성합니다.저는 그림과 같게 C와 D Port를 이용하여 7 Segment를 연결했습니다. Interrupt를 이용하여 타이머에 변화를 줄 것입니다.각각의 스위치는 Interrupt를 발생시킵니다. E Port의 4, 5, 6번을 왼쪽부터 연결하여 사용하였습니다. 각각의 Interrupt가 발생하면 특정 변수에 변화를 주는 방식으로 프로그래밍을 진행하였습니다.  4번(좌)은 시작/멈춤 그리고 5번(..
2024.03.29
no image
[ATmega 128] 1. LED 점등
각 LED 점멸 이전 ATmega 0번 포스팅에서 다룬 LED 순차 점멸에서 한 단계 더 나아가 이번에는 스위치를 한 번 누를 때 마다 점멸되는 LED가 다르게 설정해보겠습니다.#define F_CPU 16000000L // Board에 대한 CLK정보(16MHz)#include #include const int _delay_t = 500;int k = 0;int j = 0;void TogglePinA(int n, int dl) // n : n번째 비트, dl : delay in mili-second{ char b = 1  위 코드에서 if문 내의 while(1)문을 지우면 Switch를 누르고 있을 때 LED가 순차적으로 불이 들어오게 됩니다.
2024.03.29
no image
[Verilog] 2. 2Bit Adder - (Cora-z7)
기본의 2bit adder는 Half adder와 Full adder로 이루어져있습니다. 하지만 이번 포스팅에서는 Full adder 두 개로 이루어진 2bit adder를 구성해 보겠습니다.module my_4bit_fadder( input [1:0] A, input [1:0] B, output [1:0] S, output Co ); wire [1:0]ca;assign Co = ca[1];my_fadder fa0( .A(A[0]), .B(B[0]), .Ci(1'b0), .S(S[0]), .Co(ca[0]) ); my_fadder fa1( .A(A[1]), .B(B[1]), .Ci(ca[0]), .S(S[1]..
2024.03.29
no image
[Verilog] 1. Vivado 전가산기(Full Adder) - (Cora-z7)
전가산기  기존에 만들어둔 반가산기를 사용합니다. Create Source로 새로운 디자인으로 전가산기를 만들면 두 개의 Design Source가 구성되어 있는 모습을 확인 할 수있습니다. 그 후 Create된 파일에 Verilog 코드를 위와 같이 작성합니다. Full adder는 Half adder 2개와 1개의 OR로 이루어져 있기 때문에 그점을 이용하여 코드를 작성할 것입니다.코드 작성 후 저장을 하면 Source의 디렉토리가 변경된 모습을 확인할 수 있습니다.Open Elaborated Design을 하면 위 사진과 같이 Half Adder 두개와 OR Gate로 이루어진 Full Adder를 확인 할 수 있습니다.Run Synthesis 에서 Open Synthesized Design을 선택..
2024.03.29