设计流程
C代码风格
循环的优化方法
数组优化方法
IO端口实现方式
BACKGROUND
FPGA
- PL
CLB 存储 dsp运算单元 - 布线
- 可编程IO口
PL逻辑单元
在7系列的FPGA中,一个CLB中有两个Slice,Slice中包含4个LUT6、3个数据选择器MUX、两个独立进位链(Carry4,Ultrascale是CARRY8)和8个触发器。
CLB(LUT、MUX、进位链、FF)
ALU算术逻辑单元(DSP48)
存储单元(BRAM大 LUT in SLICEM <1Kb )
BRAM
- 36kb BRAM
- 36kb FIFO
- 2*18kb BRAM
- 18kb BRAM 18 kb FIFO
配置模式 - 单端口RAM
- 双端口RAM
- 真双端口RAM
- 单端口ROM
- 双端口ROM
- FIFO
数组 可以设置
需要清楚PL ALU MEMORY 的功能 、资源与算法代码的对应 消耗的资源
HLS工作机制
CAD CAE EDA(verilog )
ESL(electronic system level)
- vivado HLS
- system generator
时序(省出来的)和并行性(硬件电路),包含设计和测试,因此,生成的HDL代码无法去优化
C到HDL阶段
- 调度(scheduling)
- 控制逻辑的提取(control logic extraction)(每个时钟周期的操作和操作需要几个时钟,是否可以并行操作。通常生成状态机)
- 映射(binding) 每个操作需要用什么资源去实现