从C++程序员的角度理解FPGA硬件设计思维
所有操作在一个时钟周期内同时完成!
从"先做什么,再做什么"转向"什么可以同时做"。 不要想步骤,要想电路结构。
软件的"时间"是执行顺序,硬件的"时间"是时钟周期。 每个时钟上升沿,所有寄存器同时更新。
软件关注控制流(if-else),硬件关注数据流。 数据在电路中的传播路径就是你要设计的。
软件优化算法复杂度,硬件要平衡面积、速度、功耗。 同一功能可以串行、并行或流水线实现。
软件用断点和printf,硬件用仿真波形。 需要提前构造测试向量,分析时序关系。
复杂控制用状态机描述比嵌套if-else清晰。 每个状态是一种硬件配置。