![[VerilogHDL] UART Rx, Tx 최종(Oversampling)](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fwwwzo%2FbtsHxROxdme%2FpdIwJALpcyo0k4O8hcZQWk%2Fimg.png)
1. UART(Universal Asynchrous Receiver/Transmitter) 1:1 통신비동기 신호각 device에서 송수신 data timing을 알아서 맞춘다.클럭을 전송하는 Master device 없다.device 내부에서 동기신호를 생성해야 한다.data를 송수신할 때 Timing을 잘 맞춰야한다. 설계할 때 문제점위 그림과 같이 start trigger의 타이밍에 따라 start signal이 1클럭이 안될 수도 있다…. 해결책 : sampling16 oversampling, 8 oversampling 16 oversampling각 데이터 비트를 16번 샘플링16번 클럭이 들어온 후 다음 상태로! → baudrate 16배 증가시켜야함각 비트의 중간지점(7번째 샘플링 클럭)..
![[VerilogHDL] UART Tx(2)](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FdbaZel%2FbtsHy64Ly4N%2FmIatgrSSpUGSRtYPcsihE1%2Fimg.png)
1. UART(Tx v.2) 8개 state를 만들지 않고 baudrate tick에 한번씩 data 1bit씩 전송 구현더보기`timescale 1ns / 1psmodule uart ( input clk, input reset, input tx_start, input [7:0] tx_data, output tx, output tx_done); wire w_br_tick; baudrate_generator #( .HERZ(9600) ) U_BR_Gen ( .clk (clk), .reset(reset), .br_tick(w_br_tick) ); transmitter U_TxD ( ..
![[VerilogHDL] UpCounter, 디버깅, UART Tx](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FrNZdr%2FbtsHt4GKhkZ%2FSqEK0mIH4LejNPLqR0OIQK%2Fimg.png)
1. FSM - UpCounter 구현 더보기`timescale 1ns / 1psmodule top ( input clk, input reset, input btn_run_stop, input btn_clear, output [3:0] fndCom, output [7:0] fndFont); wire w_div_clk; wire w_run_stop, w_clear; wire [13:0] w_digit; clkDiv #( .HERZ(1000) ) U_ClkDiv ( .clk (clk), .reset(reset), .o_clk(w_div_clk) ); UpCounter U_UpCoun..
![[VerilogHDL] FSM 코딩(Moore, Mealy) - 버튼, UpCounter](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fbetzc8%2FbtsHvuRSMN0%2FQWuDHrBhsfysBOnJnirWy1%2Fimg.png)
1. FSM(Finite State Machine) (1) Moore 머신 : 출력이 현재 상태에 의해서만 결정Present State Next State Output input 0input 1 S0S1S00S1S1S01(2) Mealy 머신 : 출력이 현재 상태와 입력에 의해서 결정 Present State Next State Output input 0input 1input 0input 1S0S1S010S1S1S010 Next-State LogicNext State를 계산, 결정하는 회로현재 상태 및 입력에 따라 다음 상태를 결정State Registerclk edge에서 현재 State update(저장) ← state = next_state 형식으로..Output Logic현재 S..
![[VerilogHDL] 조합 논리 회로 & 순차 논리 회로, Latch & FlipFlop](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FSF2r6%2FbtsHtOdeWqq%2Fj9KnstjOc4HKyuyYtH1lA0%2Fimg.png)
1. 조합 논리 회로 & 순차 논리 회로 조합 논리 회로(Combinational Logical Circuit)비동기 ← 클럭에 영향을 받지 않음 ⇒ 입력이 들어가면 출력이 바로 나옴MUX, Decoder, DigitSplitter, Gates(AND, OR, …), ALU순차 논리 회로(Sequential Logic Circuit)동기 ← 클럭에 영향을 받음 ⇒ 클럭을 기준으로 동작 시점 결정Clock Diver, Counter, Flip-Flop(Edge Trigger), Latch(Level Trigger), Register 클럭을 쓰는 이유?동기화 : 동시에 무엇인가 동작, 동작을 시키기 위한 기준점데이터 무결성 향상시스템 안정성 → 시스템이 정확한 시간, 원하는 타이밍에 동작병렬 처리 → 여..
![[VerilogHDL] C&Verilog차이, SystemVerilog 기본, 8bit Adder FND, 만진 카운터](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FHWO9v%2FbtsHqbzgbYD%2FUAoHdNYYi9zPTYOsETtu81%2Fimg.png)
1. C언어 vs Verilog 1. C언어 : Sequential(잇달아) → Polling 방식으로 위에서부터 아래로 차례대로 실행 2. Verilog : Concurrency(동시성) → 동시 실행 2. 8bit Adder FND 2-1. 8bit Adder 만들기더보기`timescale 1ns / 1psmodule Adder_8bit ( input [7:0] a, input [7:0] b, input cin, output [7:0] sum, output co); wire w_carry0; Adder_4bit U_4bitAdder0 ( .a (a[3:0]), .b (b[3:0]), ..