偏硬件:接口电路中的门组合电路;
偏软件:算法、接口控制器实现中的状态机群或时序电路。
随着逻辑设计的深入,复杂功能设计一般基于同步时序电路方式。此时,逻辑设计基本上就是在设计状态机群或计数器等时序电路形成控制通路,并设计具体的组合执行单元作为数据通路的基本构件。因此,具备状态迁移或流程化的设计思路,能更好地把握整体的架构。
对于DRAM存储器和Flash存储器的接口电路来说,一般使用IP核实现接口功能,因此,对存储器的访问策略实际上演化为了程序算法问题。逻辑设计还是一种系统设计,是能够协调软件和硬件的协同设计比例。
毕竟逻辑设计是在可编程逻辑器件平台上开发,从功能角度看,逻辑多设计一些,软件就可以少设计一些。也就是说,软件、逻辑、纯硬件三家实际上是在瓜分功能设置,所以,功能可以通过指令编码(软件)、状态机描述(时序逻辑)、固定硬件(纯数字IC和PCB、组合逻辑)三种大方式进行组合实现。
换一个角度来说,可编程芯片实际上就是分为以指令编码或程序存储执行的冯诺依曼架构为基础的可编程通用器件(CPU、GPU、DSP、MCU等)和以硬件描述为基础的可编程逻辑器件(FPGA、CPLD等);不可编程芯片则最多能够通过简单EEPROM或pin-strap、有限寄存器选择不同配置,大多是功能固定的集成电路。
两种芯片和PCB组合形成了纯硬件设计领域;可编程逻辑器件形成了逻辑设计领域;可编程通用器件形成了软件设计领域。
总结来看,软件和逻辑设计的设计方法是基于时间先后的程序化,而实际形成的设计输出则是基于二进制编码的硬件数字电路。