본문 바로가기

SoC16

[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.
[AMBA] AXI Protocol 설계(Verilog) - ④ Simple AXI Slave 정리 들어가기 앞서... " AXI는 말 그대로 Interface이기 때문에 실체라고 할게 딱히 없습니다. Master와 Slave를 연결하는 Bus의 규격을 ARM에서 정해놓은 것인데요, 저와 같은 학부생들은 Master와 Slave를 구하기 어렵습니다. BFM(Bus Functional Model)을 짜서 Bus의 동작을 시뮬레이션해도 되지만 그건 조금 어려워서 아직 공부 중 입니다. 그래서 제멋대로 AXI Slave를 Verilog로 짜보겠습니다. 목적은 오로지 AMBA를 복습하고 기능을 직접 확인해보기 위함입니다! " 조금 더 공부한 후에 정확한 코드를 올려보겠습니다. 앞서 3개의 게시물을 통해 AXI Protocol에 대해 알아보았습니다. Signal Description: https://metast.. 2023. 2. 26.
[AMBA] AXI Protocol 설계(Verilog) - ③ Read Transaction 들어가기 앞서... " AXI는 말 그대로 Interface이기 때문에 실체라고 할게 딱히 없습니다. Master와 Slave를 연결하는 Bus의 규격을 ARM에서 정해놓은 것인데요, 저와 같은 학부생들은 Master와 Slave를 구하기 어렵습니다. BFM(Bus Functional Model)을 짜서 Bus의 동작을 시뮬레이션해도 되지만 그건 조금 어려워서 아직 공부 중 입니다. 그래서 제멋대로 AXI Slave를 Verilog로 짜보겠습니다. 목적은 오로지 AMBA를 복습하고 기능을 직접 확인해보기 위함입니다! " 조금 더 공부한 후에 정확한 코드를 올려보겠습니다. 이번 글에선 AXI Protocol에서 Read Transaction을 살펴보겠습니다. 먼저 채널이 응답하는 순서를 알아야 합니다. 순.. 2023. 2. 26.
[AMBA] AXI Protocol 설계(Verilog) - ② Write Transaction 들어가기 앞서... " AXI는 말 그대로 Interface이기 때문에 실체라고 할게 딱히 없습니다. Master와 Slave를 연결하는 Bus의 규격을 ARM에서 정해놓은 것인데요, 저와 같은 학부생들은 Master와 Slave를 구하기 어렵습니다. BFM(Bus Functional Model)을 짜서 Bus의 동작을 시뮬레이션해도 되지만 그건 조금 어려워서 아직 공부 중 입니다. 그래서 제멋대로 AXI Slave를 Verilog로 짜보겠습니다. 목적은 오로지 AMBA를 복습하고 기능을 직접 확인해보기 위함입니다! " 조금 더 공부한 후에 정확한 코드를 올려보겠습니다. AXI Protocol의 Write Transaction은 세 가지 채널을 사용합니다. Write Address Channel Writ.. 2023. 2. 24.