FPGA设计的抽象层级

设计的抽象层级

在我们了解 Verilog 语言的更多细节之前,最好先了解芯片设计中的不同抽象层级。

顶层是系统级架构,它定义了各种子模块并根据功能对它们进行分组。例如,处理器集群具有多个核、高速缓存和高速缓存一致性逻辑。所有这些都将被封装为具有输入输出信号的单个模块。

在下一个级别中,每个子模块都用硬件描述语言编写,以准确描述每个独立模块的功能。在此阶段,将忽略较低级别的实现细节,例如电路原理图、技术库等。例如,控制器模块最终将包含多个 Verilog 文件,每个文件来描述实现其功能的细化的组件。

然后,HDL 被转换为门级原理图,其中还涉及表征触发器等数字元件的技术库。例如,D锁存器的数字电路包含以某种方式排列的与非门,使得D和E输入的所有组合产生由真值表给出的输出Q。

真值表本质上给出了所有输入信号电平的排列和最终的输出电平,下面给出的例子是带有使能引脚的 D 锁存器。硬件原理图也可以使用布尔逻辑和卡诺图从真值表中导出。然而,对于处理器和控制器等更复杂的数字模块,使用这种方法就有点不切实际了。

NAND 门的实现是通过以特定格式连接 CMOS 晶体管来完成的。在这个层级上,设计过程中会考虑晶体管沟道宽度、Vdd和驱动输出电容负载的能力。

最后一步是使用 EDA 工具在硅中布局这些晶体管,以便大规模制造。在这个层级,需要一些设备和技术知识,因为不同的布局最终会具有不同的物理属性,例如电阻和电容等。

设计风格

其次,数字模块的设计主要遵循两种风格,即自上而下(top-down)和自下而上(bottom-up)的方法。

自上而下

在这种风格中,首先定义顶层模块以及构建顶层模块所需的子模块的标识。类似地,每个子模块将被进一步划分为更小的组件,该过程可以继续进行,直到到达叶单元(leaf cell)或无法进一步划分的阶段。

自下而上

在这种情况下,第一个任务是识别可用的构建模块。然后将它们放在一起并以某种方式连接以构建更大的单元,以用于拼凑出顶层模块。

实践中通常这两种流程都会用到。架构师定义设计的系统级视图,设计人员实现每个功能模块的逻辑并将其综合到门中。到目前为止,一直遵循自上而下的风格。然而,这些门是按照自下而上的流程构建的,从尽可能的最佳面积、性能和功耗的最小模块的物理布局开始。这些标准单元还具有硬件原理图,可用于获取各种信息,例如上升和下降时间、功率和其他延迟等。这些单元可供综合工具使用,综合工具会在需要时挑选并实例化它们。

相关推荐
Eloudy9 小时前
FPGA (QSFP28 + CMAC US+ RoCEv2) 与 Ubuntu22 + Mellanox 网卡直连分析
fpga开发
szxinmai主板定制专家10 小时前
RK3568+FPGA高速并行采集|半导体探针测试设备多通道同步数据采集系统设计
人工智能·嵌入式硬件·计算机视觉·fpga开发
Eloudy16 小时前
申请 Xilinx 免费 IP 许可的步骤笔记
fpga
零涂毕业设计1 天前
毕业设计模块开发-OLED显示屏(IIC协议0.96寸)STM32 ESP32 FPGA Linux驱动免费分享
linux·stm32·单片机·嵌入式·esp32·fpga·oled
ARM|X86+FPGA工业主板厂家1 天前
RK3588+FPGA+EtherCAT异构架构解析|工业场景如何同时保住AI算力与微秒级运动实时性
人工智能·fpga开发·架构
zlinear数据采集卡2 天前
从“脏信号”到“纳伏级纯净”:硬核拆解DABL7606的多级抗混叠滤波与24位过采样算法
arm开发·科技·嵌入式硬件·fpga开发·开源
尤老师FPGA2 天前
HDMI数据的接收发送实验(二十)
fpga开发
千寻xun2 天前
三、实战篇-NVME SSD控制之FPGA实现(一)
fpga开发·nvme ssd·nvme协议
XMAIPC_Robot3 天前
软硬协同实时控制|RK3588业务调度+FPGA硬件时序,ethercat实现半导体设备微秒级响应(125us)
linux·arm开发·人工智能·fpga开发
upper20203 天前
从零开始设计riscv cpu记录之七
fpga开发·riscv·riscv设计·btb·分支预测