no image
[Verilog] Verilog를 이용한 AI 설계 응용 및 SoC 설계(3)
CPU 통신을 위해서 DMA 컨트롤러를 이용하여 통신 BUS를 통해 Slave와 통신할 때는 각 Master와 Slave를 연결해주어야 하는데 연결하는 역할을 BUS에서 진행함. BUS는 MUX의 집합이라고 봐도 된다.Master에서 Store(Write)할 ADDR, DATA를 전송할 때는 BUS에 있는 MUX를 Arbiter가 제어한다.Slave에서 Load(Read)할 DATA를 전송할 때는 BUS에 있는 MUX를 Decoder가 제어한다. AXI Multiplier더보기Overflow 방지를 위해A + B = PA[M] B[N] = MAX[M,N] + 1Adder에서는 결과 Register는 값 + 1Multiplier에서는 두 Register bit수를 더함A x B = PA[M] B[N] = ..
2024.10.09
no image
[Verilog] Verilog를 이용한 AI 설계 응용 및 SoC 설계 (2)
https://chanfifo77.tistory.com/99 [Verilog] Verilog를 이용한 AI 설계 응용 및 SoC 설계 (1) chanfifo77.tistory.com 이전 포스팅의 마무리인 STA부터 이어서 작성하겠습니다.STA로 모든 경로를 전수조사 할 때, 최단 경로와 최장 경로만 체크하여 그 부분의 Setup 및 Hold Time을 체크하면 됩니다.\아래에 예시를 보겠습니다.위 회로에서 STA를 진행한다고 가정하면, 위 경로 중에 Longest Path의 시간을 계산하고, Shortest Path의 시간을 계산해야 합니다. 먼저 Longest Path를 본다면 (적색) F/F 에서 Tpd가 40이고, Longest Path에서 거치는 게이트가 3개이므로  longest path = ..
2024.09.29
no image
[Verilog] Verilog를 이용한 AI 설계 응용 및 SoC 설계 (1)
먼저 중요한 말은, Verilog로 회로를 설계할 때 크게 3가지로 구성됩니다.assignalwaysinstantiation이 세 가지로 회로 설계의 모든 게 가능하다고 합니다.  ASIC Design FlowASIC Deisgn Flow를 보고 들어갑니다. Buffer(CTS, Fan out) CLK을 사용하는 각각의 Register는 들어오는 CLK과 물리적인 거리의 차이가 있습니다. 그렇기 때문에 그 거리에 따른 CLK 오차 손실(Skew)을 줄여주기 위해 CLK이 빨리 들어오는 Register에 Buffer를 두어 속도를 맞추는 방법이 있습니다. CLK이 다르게 들어올 수 밖에 없는 이유는 CLK는 Chip 내부에서 만드는 것이 아니라 칩 밖에 Crystal에서 만들어, Chip으로 들어옵니다. ..
2024.09.25
no image
[Verilog] 29. 4-bit CPU Project (2)
PC(Program Counter) 8bit Register↓ Code & Schematic더보기reg8.v'timescale 1ns / 1psmodule reg8( input [7:0] data_in, input inen, input oen, input clk, input clr, output [7:0] data_out ); reg [7:0] st; always @ (posedge clk or posedge clr) begin if (clr) st tb_reg8.v'timescale 1ns / 1psmodule tb_reg8();reg [7:0] data_in;reg inen;reg oen;reg clk;..
2024.08.28
no image
[Verilog] 27. Counter
Counter counter.v더보기'timescale 1ns / 1psmodule counter( input CLK, input RST, output reg [7:0] CNT ); parameter FULL = 8'd255; parameter EMPTY = 8'b00; parameter ADD = 1; parameter SUBTRACT = 0; reg up_dn = 1; always @ (posedge CLK or negedge RST) begin if(RST) begin CNT = FULL - 1) begin if(CNT == 8'd254) ..
2024.08.23
no image
[Verilog] 26. SPI - AXI Portfolio
2024.08.23
no image
[Verilog] 25. AXI - SPI Connection Debugging (3)
https://chanfifo77.tistory.com/90 [Verilog] 24. AXI - SPI Connection Debugging (2)https://chanfifo77.tistory.com/89 [Verilog] 23. AXI - SPI Connection Debugging (1)https://chanfifo77.tistory.com/87 [Verilog] 21. SPI Debugging (2)https://chanfifo77.tistory.com/86 [Verilog] 20. SPI Debugging(1)발견된 문제점1. 전제 모듈 연결chanfifo77.tistory.com 저번 포스팅에서는 Bitstream이 되지 않는 문제가 있었습니다. 그 부분을 수정하기 위해 오류 코드를 확인해보니..
2024.08.23
no image
[Verilog] 24. AXI - SPI Connection Debugging (2)
https://chanfifo77.tistory.com/89 [Verilog] 23. AXI - SPI Connection Debugging (1)https://chanfifo77.tistory.com/87 [Verilog] 21. SPI Debugging (2)https://chanfifo77.tistory.com/86 [Verilog] 20. SPI Debugging(1)발견된 문제점1. 전제 모듈 연결 후, Read 할 때, MISO 값이 간헐적으로 이상하게 나오는 것을 확chanfifo77.tistory.com 저번에 이어 READ Operation을 작성하겠습니다. 그전에 MISO에서 RX_FIFO의 RAM으로 값이 정상적으로 동작하지 않는 것을 확인하였습니다. Problem 1.RX_FIFO ..
2024.07.26
no image
[Verilog] 23. AXI - SPI Connection Debugging (1)
https://chanfifo77.tistory.com/87 [Verilog] 21. SPI Debugging (2)https://chanfifo77.tistory.com/86 [Verilog] 20. SPI Debugging(1)발견된 문제점1. 전제 모듈 연결 후, Read 할 때, MISO 값이 간헐적으로 이상하게 나오는 것을 확인.2. Master에서 RX FIFO로 가는 DOUT의 출력 값 이상 확chanfifo77.tistory.com Vivado 에서 제공하는 AXI Example에 기존에 만든 SPI를 연결하는 과정을 담아보겠습니다. 이번 포스팅 목표1. AXI를 통해 Write 동작 하여 SPI와 연결된 RAM에 저장.2. AXI를 통해 Write 동작(CMD) 하여 RAM에서 값을 MI..
2024.07.23