一、概述1.FPGA作为工程应用的工具设计存在很多理念方法方式2.很多方法可以使用逻辑学和哲学去解释3.核心是用空间换时间时间换空间以及使用架构复杂度换开发效率。二、流水线设计1.流水线设计的概念是FPGA设计的基石2.CPU的多级流水线取指译码执行的方式可以被用到FPGA开发的数据处理路径中。二、流水线存在的瓶颈或者冒险1.结构冒险多个module访问同一个资源比如BLOCK RAM问题这个时候BRAM的是访问受限的容易撞车这个时候可以通过增加BRAM的端口来实现如果bram增加端口还不能解决问题那么就需要复制资源使用多个独立的bram拷贝同一份数据样本给不同的module使用。2.数据冒险后一条指令需要依赖前一条的结果。3.控制冒险三、单指令多数据流设计1.使用状态机 pipeline来实现四、多指令多数据流设计1.复制多份单指令多数据流的方式来实现五、存储结构1.FPGA的触发器类似CPU的通用寄存器2.FPGA的block ram类似CPU的cache3.FPGA的DDR类似CPU的内存条六、片上总线和互联1.AMBA总线系统是目前最常用的axi4/axi4-stream/axi4-lite/apb/ahb-关于FPGA实现SIMD单指令多数据集一、单FSM 多PE1.共享一个控制逻辑FSM也就是单指令2.复制多个相同的处理单元PE就是多数据集这个是比较多的应用方式二、vector向量化的数据路径1.比如512bit位宽的数据通路可以分成16个32bit的操作-多级存储方式一、从全局到本地的存储方式1.全局内存DDRDDR的容量大延迟高需要突发传输2.共享内存block ram3.分布式RAM也就是LUTRAM4.FF触发器三、设计技巧1.状态机编程2.计数器编程3.block ram实现大规模查找表设计4.利用分布式RAM实现小规模的查找表设计5.FPGA中FIFO来模拟软件中环形缓冲区6.休眠和唤醒设计低功耗FPGA中的低功耗技术包括时钟门控、电源门控可以借鉴这种“按需工作”的思想。当模块没有数据处理时可以关断其时钟通过上级模块的有效信号来“唤醒”启动时钟。7.超时退出机制8.控制与数据通路分离设计将复制运算放在数据通路将调度放在控制模块9.DMA描述符设计模拟链表10.赤字加权轮询仲裁器