본문 바로가기

Digital Design42

[SoC] DMAC_arbiter_top.v (최종) 현재 ARM의 DMAC Reference Manual을 보고 DMAC Arbiter를 설계하는 프로젝트를 진행하고 있습니다. 이게 ARM에서 추천한 DMAC 동작 메뉴얼을 보고 만든거라 DMAC Arbiter라고 하는건데, 사실 조금씩 수정해서 아무데나 범용성 있게 사용해도 될 것 같습니다. 이제 마지막 관문입니다! 앞서 Fixed Priority와 LRG 기반 Round-Robin Arbiter를 설계했었습니다. 오늘은 이 두 아비터를 merge한 top block을 업로드하려고 합니다. 참고로 지난 시간에 설계한 LRG Round-Robin Arbiter는 시뮬레이션을 좀 더 편하게 보려고 한 Master에게 1clk씩만 사용권을 부여했었습니다. 하지만 실제로는 여러 클락동안 사용해야겠죠? 따라서 R.. 2023. 4. 30.
[SoC] Arbiter_Fixed Priority (Design with Verilog) 안녕하세요. 지난 시간에는 History Queue를 이용한 LRG 기반의 Round Robin Arbiter를 설계해보았습니다. 오늘은 쉬어가는 타임으로 Fixed Priority Arbiter를 설계해보겠습니다. Master 여러개가 Request를 보내면 순서를 정해주는 신호등 역할을 하는 것이 바로 Arbiter라고 했었죠? Fixed Priority는 우선순위를 고정해 놓는다는 뜻입니다. 예를 들어 M0 > M1 > M2 > M3로 순위를 정해 놓았다고 가정해보겠습니다. 만약 M0, M1, M3가 REQ를 보내면 어떻게 될까요? 무조건 M0먼저 처리해줍니다. Fixed Priority Arbiter는 공평하진 않지만, 중요한 Master가 먼저 버스를 사용할 수 있게 만들어준다는 장점이 있습니다.. 2023. 4. 30.
[SoC] Round-Robin Arbiter_LRG (Design with Verilog) 안녕하세요. 지난 글에서 Fixed History 기반의 Round-Robin Arbiter을 설계하였습니다. Fixed History의 경우 공평하게 bus 사용권을 배분할 수 있겠지만 아래의 케이스에서는 공평하지 않을 수 있습니다. 예를 들어, Master 4개 중 M0, M1, M2, M0, M1, M2, M0, M1, M2, M0 순으로 Grant 하다가 M0, M1, M2, M3의 요청이 동시에 들어왔다고 가정해보겠습니다. 어떤 Master부터 버스를 사용할 수 있을까요? M0로 끝났기 때문에 M1, M2, M3 순으로 사용 가능할 것입니다. M3의 경우 오래 전에 Grant 되었는데 아이러니하게도 가장 늦게 선택권이 주어집니다. 이 점을 보완한 것이 Least Recently Granted 알.. 2023. 4. 26.
[SoC] Round-Robin Arbiter_Fixed History (Design with Verilog) 안녕하세요. 지난 시간에 LRG Arbiter에 대해 학습하였습니다. 오늘은 LRG Arbiter에 사용되는 Round-Robin 알고리즘을 사용해 Arbiter를 Verilog로 설계해보겠습니다. Least Recent Granted 기반의 아비터를 만들기 전에, 먼저 Fixed History 기반의 RR 아비터를 설계해볼게요. (Fixed History는 제가 그냥 지어낸 것입니다.. 가장 기본적인, 돌아가면서 Grant하는 RR 알고리즘으로 생각해주세요) History queue에 이전의 결과를 저장하지 않고, M0 -> M1 -> M2 -> M3 -> M0 -> M1 ... 순서대로 돌아가면서 처리해보겠습니다. Verilog Code DUT module round_robin_arbiter( inp.. 2023. 4. 25.
[SoC] DMAC LRG Arbitration (ARM DMAC Reference Manual) ※ 이번 게시글은 ARM의 DMAC Reference Manual을 참고하여 작성하였습니다. 안녕하세요! 오늘은 DMAC에 사용되는 Arbiter에 대해 알아보겠습니다. Arbiter에는 여러가지 종류가 있는데요, 이번엔 ARM에서 제공한 LRG 알고리즘에 대해 학습해 보겠습니다. Arbiter의 필요성과 Timing Diagram은 AHB 게시글 맨 밑 부분에 설명되어 있습니다. AHB: https://metastable.tistory.com/40 [AMBA] AHB (Advanced High-Performance Bus) 이번에 다룰 주제는 AMBA 2.0의 AHB (Advanced High-Performance Bus) 입니다. ARM이 제공한 Datasheet를 이용해 설명하도록 하겠습니다. 이름.. 2023. 4. 24.
[SoC] Timing Violation (Setup/Hold/Skew/Jitter/해결법) 오늘은 Flip/Flop 간의 타이밍 문제를 다뤄보고자 합니다. 클락 타이밍에 문제를 일으키는 것들을 여러가지가 있는데, Set-up/Hold Time, Clock Skew, Jitter 등을 소개하겠습니다. 물론 설계를 할 땐 하나하나 확인하지 않아도 됩니다. STA (Static Timing Analysis) 툴을 이용하면 더 많은 violation들을 체크할 수 있기 때문이죠. 가장 기본적인 문제들 위주로 학습해보고, 그에 대한 해결법도 알아보겠습니다. Set-up Time 먼저 Set-up Time 입니다. Rising edge마다 값을 반영하는 D FlipFlop이 있다고 해볼게요. 그럼 이 FF의 Rising edge 직전에 D가 바뀌면 Q에 반영이 될까요? 정상적인 케이스 먼저 파형으로 보겠.. 2023. 4. 14.
[컴퓨터구조] 파이프라이닝 (Pipelining) 안녕하세요! 컴퓨터구조 관련 글로 오랜만에 돌아왔습니다. 이전에 CPU 동작 원리에 대해 학습한 것 기억나시나요? CPU 동작 원리: https://metastable.tistory.com/28 오늘은 응용버전인 파이프라이닝 (Pipelining)에 대해 배워보도록 하겠습니다. Intro 먼저 파이프라이닝을 왜 해야 할까요? 그림으로 알아보겠습니다. 빨래방에서 빨래를 한다고 생각해볼까요? 우리는 세탁기를 30분 돌리고, 건조기를 40분 돌리고, 정리를 20분 해야 합니다. 이걸 한 사이클에 한다고 가정하면 위의 그림처럼 비효율적일 것입니다. A가 세탁/건조/정리를 다 할때까지 B는 계속 기다려야 하죠.. 그런데 A가 건조기를 사용할 동안 세탁기는 비어있죠? 그럼 B가 세탁기를 사용하면 안될까요? 여기서 .. 2023. 4. 10.
[컴퓨터구조] ASIC Design Flow 지금까지 회로에 대한 설명과 RTL 설계, 공정까지 다양한 주제를 다뤘었는데요, 제가 중요한걸 하나 빼먹었더라구요.. 바로 ASIC Design Flow입니다. 반도체 칩은 도대체 어떤 과정으로 만들어지는 것일까요?? 하나의 칩을 만들려면 정말 다양한 분야의 지식과 툴, 여러 인력과 많은 돈이 필요합니다. 반도체 칩 같은 경우는 한 번 만들어지면 수정이 불가능하다고 봐도 됩니다. 예를 들어 휴대폰에 오류가 생겨서 AS센터에 가면, 기사님이 칩을 뜯어서 MOSFET이나 metal line 같은걸 고쳐주진 않잖아요? 따라서 반도체 칩은 무조건 "완벽하게" 만들어야 합니다. 그래서 그런지 여러 과정을 거치면서 다양한 검증을 하게 됩니다. 오늘은 그 Flow를 간단하게 살펴보는 시간을 갖도록 하겠습니다. ASI.. 2023. 3. 16.