4、软件设计[5]
在CPLD开发的过程中,使用的是Altera公司提供的CPLD开发软件QuartusⅡ,该软件支持Altera公司的绝大部分器件。为了缩短设计周期和降低设计复杂度,QuartuslI包含了工作组计算、集成逻辑分析功能、EDA工具集成、多工程支持、增强重编译和IP集成等功能。在设计过程中采用的是自顶到底的设计思想,顶层基于功能块的设计,底层的具体功能通过VHDL语言编程实现。
4.1 顶层设计[6、7]
自顶向底的设计过程是在软件中先从系统级功能设计开始,然后分别设计并验证系统中不同的功能块。这种设计方法的好处是可以不断地向设计中添加新的功能模块,完善系统的功能。
在顶层中主要设计了三个功能模块: 预分频模块、次分频模块、译码模块。功能块图见图5。系统上电工作时,首先由晶振为系统提供精确的基频信号,通过预分频模块将原有基频信号转化为400Hz的时序信号,将400Hz的信号通过次分频模块进行二分频和四分频[6,7],将分频所得100Hz和200Hz的信号输入译码器模块[7],通过译码产生时序间隔为2.5ms的精确时序控制信号。
4.2 底层设计
系统功能验证完成后,将抽象的顶层设计向低层设计细化,底层软件设计是基于顶层软件中三大功能模块而设计的,模块设计采用VHDL语言描述完成,通过编译、综合、仿真后生成底层设计文件,以供顶层设计调用。以fenpin模块为例,部分程序如下:
architecture rt of fenpin is
signal temp :std_logic_vector(1 downto 0);
begin
process(clk,temp,en)
begin
if en=’1’ then
if rising_edge(clk) then
temp<=temp+’1’;
end if;
null;
end if;
end process;
clk2<=temp(0);
clk4<=temp(1);
end rt;
5、系统仿真和验证
软件设计完成后,通过Quartus II软件指定芯片为EPM570T100C5,并根据电路原理图进行引脚分配,设定CPLD的引脚功能,然后启动编译程序来编译项目。编译器将进行错误检查、网表提取、逻辑综合和器件适配,然后进行行为仿真、功能仿真和时序仿真,最后用下载电缆通过JTAG编程方式将文件下载到芯片中,从而生成硬件电路。
图6为系统软件仿真的结果,从图中可以发现,生成的时序控制信号状态稳定,精度为纳秒级。
图7为将程序下载到目标芯片,硬件工作时通过逻辑分析仪观察到的系统实际工作状态图,可以发现系统实际工作状态与理论设计思想相一致。图中的三路时序控制信号精度较高、状态稳定,无毛刺和漂移现象,为提高系统的稳定性和接收矩阵的精度奠定了基础。