digraph G { graph [rankdir=LR, bgcolor="transparent", pad=0.15, nodesep=0.35, ranksep=0.65, fontname="Noto Sans CJK SC", fontsize=10]; node [shape=box, style="rounded,filled", fontname="Noto Sans CJK SC", fontsize=10, color="#44546A", fillcolor="#F5F7FA", margin="0.13,0.08"]; edge [fontname="Noto Sans CJK SC", fontsize=9, color="#596777", arrowsize=0.7]; cpu [label="LoongArch32r CPU\n软件调度 / 校验", fillcolor="#EAF2F8"]; xbar [label="AXI Crossbar\n双主设备 / 统一编址", fillcolor="#D9EAF7"]; mem [label="BaseRAM / ExtRAM", fillcolor="#F2F2F2"]; periph [label="UART / DVI / confreg", fillcolor="#F2F2F2"]; dma [label="4 通道 DMA\nmem2mem / endpoint", fillcolor="#E8F3E8"]; seq [label="matmul 批处理序列器", fillcolor="#E8F3E8"]; matmul [label="4x4 矩阵乘法\n双 Bank + CRC", fillcolor="#FFF1D6"]; fft [label="1024 点 FFT\n5 个 Radix-2² SDF 单元", fillcolor="#FFF1D6"]; mlkem [label="ML-KEM-512/768/1024\nKeyGen / Encaps / Decaps", fillcolor="#F8E6EA"]; cpu -> xbar [label="AXI master 0"]; dma -> xbar [label="AXI master 1", dir=both]; xbar -> mem [dir=both]; xbar -> periph [dir=both]; xbar -> dma [label="配置"]; xbar -> matmul [label="Slave 7", dir=both]; xbar -> fft [label="Slave 6 / 高地址", dir=both]; xbar -> mlkem [label="Slave 6 / 低地址", dir=both]; seq -> dma [label="描述符"]; seq -> matmul [label="start / done"]; dma -> matmul [label="本地 endpoint", dir=both, color="#2F6B3C", penwidth=1.4]; }