最基本的调试手段是基于FPGA 厂商提供的开发和仿真环境,用硬件描述语言编写TESTBENCH,构成一个最小运行环境。TESTBENCH产生对目标软核的激励,同时记录软核的输出,和预期值进行比对,可以确定核的设计错误。这种方法的好处是实现容易,结果准确,但硬件描述语言编码量较大。为了仿真结果的准确性,无论功能仿真还是时序仿真,仿真的步长都不能太小,结果导致整个系统仿真时间太长。本设计中先对RISC CPU的各个子模块进行了分别综合,检查正确性,如果发现错误可以在较小的范围内来检查并验证。子模块综合完毕后,把要综合的RISC CPU的模块与外围器件以及测试模块分离出来组成一个大模块,综合后的的RISC CPU模块如图4所示,这是Xilinx ISE7.1 所综合生成的技术原理图。
综合的结果只是通用的门级网表,只是一些与、或、非门的逻辑关系,和芯片实际的配置情况还有差距。此时应该使用FPGA/CPLD厂商提供的实现与布局布线工具,根据所选芯片的型号,进行芯片内部功能单元的实际连接与映射。这种实现与布局布线工具一般要选用所选器件的生产商开发的工具,因为只有生产者最了解器件内部的结构,如在ISE的集成环境中完成实现与布局布线的工具是Flow Engine。
图4 CPU技术原理图 STA(Static Timing Analysis)静态时序分析,完成FPGA设计时必须的一个步骤。在FPGA加约束、综合、布局布线后,在ISE中可以运行Timing Analyzer生成详细的时序报告,本设计中Minimum period: 12.032ns (Maximum Frequency: 83.112MHz),Minimum input arrival time before clock: 6.479ns,Maximum output required time after clock: 9.767ns。然后,设计人员检查时序报告,根据工具的提示找出不满足Setup/Hold time的路径,以及不符合约束的路径,进行修改保证数据能被正确的采样。在后仿真中将布局布线的时延反标到设计中去,使仿真既包含门延时,又包含线延时信息。这种后仿真是最准确的仿真,能真实地反映芯片的实际工作情况。
7 结 论
复杂的RISC CPU设计是一个从抽象到具体的过程,本文根据FPGA的结构特点,围绕在FPGA上设计实现八位微处理器软核设计方法进行探讨,研究了片上系统的设计方法和设计复用技术,并给出了指令集和其调试方法,提出了一种基于FPGA的微处理器的IP的设计方法。本文作者创新点是:根据Spartan II 的内部结构,在编码阶段实现了地址和数据的优化,实现阶段对内部布局布线进行重新配置,设计实现的微处理器仅占用78个slices,1个Block RAM,在10万门的芯片实现,占用6%的资源。
参考文献: |