본문 바로가기

Digital Design42

[AMBA] AHB (Advanced High-Performance Bus) 이번에 다룰 주제는 AMBA 2.0의 AHB (Advanced High-Performance Bus) 입니다. ARM이 제공한 Datasheet를 이용해 설명하도록 하겠습니다. 이름처럼 APB보다는 Performance가 뛰어난 Bus Protocol입니다. APB와 겹치는 부분은 APB 게시글을 참고해주세요! AMBA 2.0 APB: https://metastable.tistory.com/39 AHB Interconnection APB는 하나의 Master가 여러 Slave에 연결되어 있는 반면, AHB는 여러개의 Master가 여러개의 Slave에 연결되어 있습니다. Master와 Slave가 연결 될 때 Bus를 타고 신호를 전송합니다. 이때 여러개의 M/S가 신호를 주고받으면 충돌이 일어나겠죠? .. 2023. 2. 6.
[AMBA] APB (Advanced Peripheral Bus) ※ 본 게시글의 그림 저작권은 ARM사에 있습니다. 앞으로 AMBA Bus Protocol을 하나하나 설명할 예정인데요, 오늘은 그 중 가장 간단한 APB로 시작하겠습니다. APB (Advanced Peripheral Bus) APB의 장점 Low power Low cost Low complexity APB의 단점 Low bandwidth Non pipelined APB Signals 우선 모든 signal들은 APB의 P를 앞에 붙여줍니다. PADDR은 APB의 Address Bus를 전송합니다. PSELx는 어떤 slave device를 선택할 지 결정합니다. PWRITE는 읽을 지 쓸 지 결정합니다. (1이면 Write, 0이면 Read) PWDATA는 write data로 쓸 data를 보냅니다... 2023. 2. 6.
[AMBA] AMBA Bus Protocol 오늘은 AMBA Bus Protocol에 대해서 알아보겠습니다. AMBA (Advanced Microcontroller Bus Architecture) AMBA는 칩 설계를 논할 때 빠질 수 없는 회사인 ARM에서 제공한 BUS Protocol입니다. 반도체가 발전하면서 칩들 사이의 연결이 굉장히 중요해졌는데요, 이제는 하나의 칩 안에 여러 IP를 내장하는 SoC (System on Chip) 구조를 사용합니다. 기존에는 point-to-point 방식을 사용하여 IP를 연결해주었습니다. 위와 같은 구조로 연결하면 간단하긴 합니다. 모든 IP를 하나하나 연결해주면 되기 때문이죠. 하지만 여기에 하나의 IP를 추가할 경우 어떻게 될까요? 각각의 IP에 새로운 연결선을 추가해줘야 하는 번거로움이 있습니다. .. 2023. 2. 6.
[컴퓨터구조] 16bit CPU 설계 (Design with Verilog) 이전 글에서 CPU의 구조와 작동원리에 대해 알아보았습니다. 이전글: https://metastable.tistory.com/28 이번에는 이론을 바탕으로 CPU를 Verilog로 설계하였는데요, 처음부터 깊게 들어가면 너무 어렵기 때문에 간단한 16 bit CPU를 설계하도록 하겠습니다. 시작 전에 말씀드리자면 2년 전 베릴로그가 익숙하지 않을 때 작성하여서 오류랑 잘못된 코딩스타일이 많을 수 있습니다.. (ex. reset, latch 생기는 코딩 등) 추후 시간이 나면 한 번 정리해서 올리도록 하겠습니다. 참고로 여기서 사용한 메모리는 앞에서 설계한 sram을 instance하여 이용하였습니다. RISC-V Instruction set이나 GitHub에 있는 코드를 한 번 읽어보는 것도 좋을 것 같.. 2023. 1. 12.
[컴퓨터구조] CPU 작동 원리 오늘부터는 CPU에 대해 알아보겠습니다. 먼저 CPU란 무엇일까요? CPU (Central Processing Unit): 중앙 처리 장치 CPU는 기억, 해석, 연산, 제어라는 매우 중요한 역할들을 도맡는, 컴퓨터의 대뇌라고 할 정도로 매우 중요한 부분입니다. 프로그램의 명령어를 해석하여 데이터를 연산/처리를 하고 그렇게 돌아가도록 제어해주는 기능을 내장한 칩이죠. CPU는 4단계의 Cycle로 명령어를 처리합니다. 1. Fetch: 명령어 인출 - CPU에서 명령어를 읽어옴 2. Decode: 명령어 해독 - 읽어온 명령어를 해독 3. Execute: 명령어 실행 - 해독한 명령어를 실행 4. Store: 결과 저장 - 계산 결과를 저장 각각의 사이클에서 어떤 일이 벌어지는 지 알아보기 전에 레지스터.. 2023. 1. 9.
[메모리] SRAM에 데이터 쓰고 읽기 (Design with Verilog) 이전 글에서 SRAM을 Full Custom Design 했었습니다. 이제 메모리가 만들어졌다고 가정하고, 데이터를 읽고 쓰는 과정을 진행해보겠습니다. Verilog Code DUT `timescale 1ns / 1ps module sync_sram(addr, din, dout, clk, we); parameter addr_width = 8, word_depth = 256, word_width = 8; input clk, we; input [addr_width-1:0] addr; input [word_width-1:0] din; output reg [word_width-1:0] dout; reg [word_width-1:0] mem [0:word_depth-1]; always @ (posedge clk).. 2023. 1. 8.
[메모리] SRAM Full Custom Design (Layout) 이번에는 이전 글에서 만든 SRAM schematic의 Layout을 디자인할 예정입니다. Tool은 학교에서 많이 사용하는 MyCAD를 이용하였습니다. 먼저 SRAM Cell의 Layout입니다. Metal은 최소한으로 사용하기 위해 2층만 사용하였습니다. 다음은 Sense Amplifier의 Layout입니다. 이제 SRAM Cell과 Sense Amplifier를 합칠 차례입니다. 배포된 가이드 라인을 읽어보면 Design Rule이 있습니다. Metal 사이에 이격시켜야 할 거리 등이 작성되어 있으므로 꼼꼼히 읽고 설계하는 것이 중요합니다. 이렇게 설계가 끝나면 Schematic과 Layout을 시뮬레이션 해봐야 합니다. 또한 두 가지를 비교해서 잘 설계되었는지도 확인해봐야 합니다. 검증에는 DR.. 2023. 1. 8.
[메모리] SRAM Full Custom Design (Schematic) 이번 글부터 SRAM을 설계한 것을 작성할 예정입니다. SRAM은 Full custom design으로 진행하였습니다. Schematic 파트 먼저 시작하겠습니다. 먼저 6T SRAM Cell을 설계하였습니다. 6T SRAM은 4개의 NMOS와 2개의 PMOS로 구성되어 있습니다. SRAM의 Word line을 선택하기 위해 Decoder도 달아주었습니다. 마지막으로 BL과 BLB의 미세한 전압차이를 증폭시키기 위해 Sense Amplifier를 달아주었습니다. SRAM Cell 16개를 이어 붙이면 다음과 같은 Schematic이 나옵니다. BL과 BLB를 타고 내려오면 Sense Amplifier에 의해 전압차이가 증폭되어 0을 썼는지 1을 썼는지 알 수 있게 됩니다. 2023. 1. 8.