假设双口RAM中存放一个周期的正弦信号数据,那么此时DAC输出的正弦信号的频率fout=fclk×M/2N,同理,当双口RAM中存放的是方波或者三角波数据时,DAC也会输出相应频率的信号。
模块中32位频率控制字锁存器,是用VerilogHDL语言实现的,并生成自定义模块以供上层原理图调用。N位累加器和双口RAM是利用Quar-tus II8.1中的MegaWizard Plug-IN manager定制实现。
2.2.2 定制Nios II CPU
32位的Nios II软核是该基本信号发生器的核心模块,主要用于人机界面的控制、键盘值的读取以及控制DDS模块输出信号的频率和样式。
如图1所示,CPU与外围设备之间要添加相应的外围接口,通过Avalon总线与相关部件相连,通过Avalon的读写时序对各个设备进行操作。在SOPCBuilder中可以提供众多IP核,通过定制即可完成相应系统的设计。
在软核定制过程中,I/O接口设计充分体现了软核设计的可裁减优势,根据系统设计的要求,任意改变IO口的个数和类型,使用方便。根据本设计功能的要求,确定IO口如表1所示。
为了使该基本信号产生器系统更加简化,没有扩展Flash存储器以及SRAM存储器,而采用EPCS1和FPGA内的RAM来代替。EP1C6Q240C8的RAM容量为92 160 bit,在配置时分配空间的大小因程序的大小而定,做到资源的充分合理应用。根据以上分析需要加入的组件有:NiosII CPU Core(CPU核)、片上存储器以及PIO。配置完成后将会生成如图5所示定制的CPU配置表。点击Generate生成模块,其模块如图6所示。
2.3 Nios II软件程序设计
在系统软件设计阶段,采用的开发工具是Nios IIIDE,它是Nios II系列嵌入式处理器的基本软件开发工具。所有软件开发任务都可以在Nios II IDE下完成,包括编辑、编译、调试和下载。
本程序实现的主要过程是:系统接收键盘扫描模块发来的5位扫描码,判断键盘是否按下以及按下的键,根据按键的不同进入不同的子程序以实现LCD显示、频率控制字的写入、信号数据的生成以及将其写入双口RAM。
主程序流程如图7所示。
4 结束语
采用人机界面交互方式进行信号选择、频率设置等,Nios II CPU通过判断键盘输入在LCD上给出相应的显示,提示用户选择相应的按键,输入完毕后,CPU将产生的信号数据和频率控制字传送给双口RAM和频率控制字锁存器,最后在DAC输出端输出相应模拟信号。通过示波器观察所产生的正弦波、方波以及三角波,达到了预期的目标,满足了系统设计要求。