61009203可即时编写式波形发生器报告

发布者:系统管理员发布时间:2013-10-10浏览次数:21

可即时编写式波形发生器
                   学号 61009203
                                 姓名   唐颖思
1、申请题目:
n      题目:可即时编写式波形发生器
n      命题描述:
可完成常规的矩形波、三角波、正弦波的波形产生,并能根据使用时的需要,对矩形波占空比、正弦波频率进行调节。另可实现即时编写任意波形的输出,即在16*16点阵板上进行描点法绘制波形,并能输出所绘制任意波形。
2、课题背景:
n      存在问题、应用背景:
使用任意波形发生器产生信号源的运用很广泛,如此也日益提高了对波形发生器的要求。单一的,固定的波形发生已经满足不了广泛的需求。尤其是如果需要某种特定的非常规波形,使用一般波形发生器很难得到想要的波形。本项目提出一种新型的可支持波形发生并可实现频率可调、可即时编写的信号源,可通过点阵板描出任意形态波形进行输出。
3、项目规划:
n      功能、指标、规模:
项目功能:
v       支持三角波波形输出;
v       支持矩形波波形输出;
v       支持正弦波波形输出;
v       矩形波占空比可调;
v       正弦波频率可控,4位频率控制分别可调,数码管显示当前频率;
v       支持16*16点阵板即时描点,描点过程中每个设置点均可上下移动,确认好自动换行进行下一点的绘制;
v       4种模式的波形输出;
v       波形模式指示灯、按键指示灯。
            指标:
              矩形占空比10%~100%可调,正弦波频率0Hz~1024Hz精确可调。
            规模:
 整个工程消耗2267个逻辑单元,使用了107个I/O口,外设使用了16*16点阵板以及D/A转换模块
n      面板(显示)、操作、规则
面板:
 
 
 
操作:
F:复位键
Add: 频率控制加
Sub:频率控制减
频率位:控制所调节的频率位
描点:按下即进行描点的相应操作
规则:
按下F进行复位,按E键初始化,1、2、4、5对应矩形波、三角波、正弦波输出模式及描点模式,E键确认,D键调幅(未实现),按下C键开始调频率。用频率位按钮控制所调节的位,用add和sub调节频率,按下E键确认。C键开始占空比调节,D键为确认调好参数,输出波形。
若在初始化后选择5,即描点模式,则按下E键确认,再按下E键开始描点,此时点阵板第一列第九个点点亮,按下“1”,再按描点按钮时亮点往下移,按下“5”,再按描点按钮时亮点往上移,描好一个点后按下“B”,则进入下一个点的绘制。所有点描好后,按下D键,按E确认后输出波形。
 
n      输入、输出接口
键盘输入接口
ADD、SUB、描点、频率位的控制端接口;
点阵输出接口;
D/A转换的10位数字信号接口;
数码管、LED指示灯接口
4、实现方案:
n      核心问题
1. 三角波、矩形波发生;
2. 正弦波形产生;
3. 由键盘输入频率控制的实现;
4. 16*16点阵实现描点法绘制波形;
n      解决方案
1. 三角波、矩形波发生:
采用计数的形式,每步加一,得对应输出(矩形波为0或1,三角波为递增递减)
2. 正弦波形产生:
采用DDS(直接数字频率合成)原理。整个模块由累加器、地址寄存器、正弦查找表和顶层文件组成。
将22位频率控制字(低10位为键盘输入的频率转成的二进制数,其余高位为0)送至累加器,在时钟上升沿,由累加器一步步循环相加,每步相加得到的和送入地址寄存器,取地址寄存器的高10位输出,以此为地址,在正弦查找表中查找相应的正弦波的幅值,地址寄存器输出再送入累加器与频率控制字相加,如此循环。正弦查找表列出了1024个数据,将每次累加查得的10位幅值输出送至D/A转换模块即可输出波形。
3. 由键盘输入频率控制的实现:
按位设置频率值:
用频率位按钮的按下控制状态循环跳变,相当于移位寄存器,每个状态对应一个有效位,以此控制各个频率位的循环有效。当Add、sub按下时相应频率位的值对应加一个权减一个权。如设置百位时,add键有效一次,程序中的频率值加100;设置十位时,add键有效一次,程序中的频率值加10.循环设置四位再进行数值转换后,得到频率控制字。
频率控制的数码管显示:
程序中再将该频率值从高位到低位依次减去权值,滤出每一位的值后转换数制送入4个数码管,显示频率设置动态。
4. 16*16点阵实现描点法绘制波形:
描点:
采用二维数组记录点阵信息。
二维数组初始化:
     ('0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0'),
       ('0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0'),
       ('0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0'),
       ('0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0'),
       ('0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0'),
       ('0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0'),
       ('0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0'),
       ('0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','1'),
       ('0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0'),
       ('0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0'),
       ('0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0'),
       ('0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0'),
       ('0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0'),
       ('0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0'),
       ('0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0'),
       ('0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0')
   用变量a、b分别表示行和列,初始时a=8,b=1;当键盘按下“1”再按下描点按钮时,原来位置置为0,a加一,当前数组中a、b所对应的位置置为1;若键盘按下“5”再按下描点按钮时,a减一,同上。当键盘按下确认键B时,原位置仍为1不变,将当前列的值赋给下一列,b加一。
   如此不断刷新数组,即时存储描点信息。
显示:
点阵显示:列信号轮流有效,作为扫描信号,持续扫描各列,对应送入该列各行的值即可显示描出波形
波形显示:依次将各列的行信息送入D/A转换模块,显示波形。
         
5、系统结构:
n      系统框图
 
n      模块功能描述
键盘:译出按键
控制模块:即状态机,根据按键跳变状态,由状态变化运行相应步骤,驱动相应模块工作。
数码管显示模块: 显示设置的频率值,以及在频率设置的过程中的当前值,便于进行加或减的调节操作
16*16点阵板模块:当由键盘进入该模式,当前状态值使得该模块有效时,由键盘输入控制输出,进行描点操作
波形数据模块:各种波形数据的生成程序,通过键盘和状态机使能不同的波形模块,即得到相应的波形数据输出。
频率字模块:进入调节频率功能时,输出每位控制使能,由输入的每位的控制得到每位的设置值,输出设定的频率控制字以及将各位的值送入对应的数码管进行显示当前频率。
D/A模块:对FPGA输出的数字波形数据进行数模转换,输出接至示波器。
 
n      模块接口标注(参数、协议)
EP1C6Q240C8实验箱的输入输出的实际连线与管脚表
6、状态流程图:
n      系统工作状态流程
 
(状态机是原设计思想的呈现,其中部分功能最后未能完成)
7、各主要模块仿真结果波形
n      各模块的仿真波形,详细注释输入输出功能端口
键盘:
 

方波:
 

占空比设置:
8、课程设计总结
n      预期的目标与当前实现功能的差异详细注释
完全采用数字器件完成波形发生器确实是有一定难度的,工作量较大,涉及的问题较多,尤其是在方式方法上。这次的数字系统设计并没有完成全部的预期功能,但是就个人而言,最后出来的效果也还是很有成就感了。差异主要在于:
1.   正弦波的产生:原计划采用rom存储一个周期标准正弦波数据,产生波形时再根据设定参数调节频率、幅值等,后设计过程中翻阅了大量资料,发现采用DDS的方法直接查表,未使用rom进行存储,这种方法更加简便有效且精度高。
2.   点阵板的显示:原计划采用ram,但是实际编写时采用了二维数组的扫描形式,更加直观,有利于编写。
3.   矩形波、三角波的频率控制:最后成品中矩形波、三角波的频率固定不能调节。这是在我整个程序完成后,调试过程中进行的改动,原因是由于矩形波、三角波并未采用DDS的方法,而是我自己想的计数的方式,频率调节难度很大,调试时始终不能出来想要的频率,最终放弃该功能,以获得波形的较好输出。
4.   波形幅度调节:数点部分需要设置同频率调节模块功能相仿的部分,记录从键盘输入的幅度设定值,再将此值送入一个D/A模块,用其输出作为最后输出波形的D/A模块的基准电压,即可完成此项功能。做的时候由于本身波形发生器功能繁琐,两个D/A的协调更是复杂,做出来精确度很难保证,未能完成此功能。
5.   线性组合功能:该功能实现确实复杂。由于波形的随机性,需使用ram预存前一波形的数据,再重新回到波形选择模式,进行后一波形参数的设定,最后结合相位差,将两波形数据按相位值的设定对应相加减,最后输出数据,十分繁琐。而若使用固定预存波形,比如存入方波数据,再进行线性组合,工作量能减少,但失去现实意义,略去该功能,整个体系更加明晰。
n      可以进一步发挥提高的部分
1. 首先是矩形波、三角波也应采用DDS合成,这样子模块也更加明晰,进来频率字后查不同的波形数据表就能得到不同的波形输出,并且频率控制的精度也更加高。
2. 点阵绘制波形的输出,实验时我错误地采用了点阵扫描速率作为波形输出速率,导致与D/A转换速率差异巨大,又加之点阵描点本身就只有16个点,很难保真,导致输出波形毛刺很多。如果采用更高的频率扫描二维数组输出至D/A,可能能得到更好的效果。另外未考虑周到点阵板和二维数组的顺序问题,导致输出倒置,可调节程序,使输出与点阵描点绘制波形完全一致。
3. 可更改频率控制模块的部分程序,使可调频率的范围再加大,更满足实际应用。以及预期的调幅、全部波形调频功能,更实用。
n      课程设计体会
经历无数天的奋战,终于出来了。只有经历过《数字系统课程设计》的同学才能体会这句简单的感慨中包含了什么。
从选题目开始说起。我想了很多题目,跟同学重了一次,被老师毙了两次,最后实在无奈之时,胡老师建议我做一个可即时编写的波形发生器。终于申请书顺利通过了,虽然黄老师再三警告正弦波很难做。
正式开始写程序时才发现这个项目包含了这次几乎数字系统所能包含的全部东西。有状态机,有内部各种模块,有点阵显示,有D/A外设,突然觉得很难去掌控这么多的东西。先是从键盘和状态机入手,由于《计算机结构及逻辑设计》实验课程的期末大实验中已经有所历练,这两部分的编写还是比较顺利的。而接下来的波形产生、频率控制、点阵、外设,都是一串串很头疼的问题,有些甚至没有接触到过。
我从矩形波、三角波波形产生入手,自己想了个计数的方式产生这两种波形,刚开始还觉得很满意,却没想到这直接导致了我后面部分的复杂化。正弦波的产生刚开始没有头绪,查了很多资料,选择了用DDS(直接数字频率合成)的方法即简单又有效。同样的频率控制、点阵显示等等都是一个模块一个模块单独突破,最终完成了程序。
调试的过程也很辛苦,状态乱跳、不响应、波形毛刺……那段时间天天泡在实验室,早上等着开门,晚上关门再走,匆匆去食堂吃饭,又匆匆回实验室……
终于成功验收。虽然有一些瑕疵,但是看得出来老师对做出来的结果也比较满意了。于我来说,莫过于一种天大的肯定和欣慰。成功的实验箱硬是好久都舍不得拆。
虽然很辛苦,但我也深刻记得每天跑实验室调试程序的日子是很快乐的,首先我自己对数字系统设计就有较大的兴趣,编写程序让它完成一个功能,不行就动脑排错,很有意思,也很锻炼人。另外那段时间里大家都热热闹闹地挤在实验室里,相互讨论、相互请教、相互鼓励,也是一种很难得的并肩作战的回忆。
从课程本身而言,的确是有一定的难度。但是这种难度和这种机制真的很能锻炼我们自己动手做出一个完整的工程的能力。项目申请、方案论证、程序代码、调试验收、展示答辩,这样一套完整的过程让我们第一次感受到实际工作中完成一个项目的完整步骤。它引导了我们学会怎么样去做一个完整的工程,需要哪些流程,每个阶段该怎么样安排。而这些对于一个工科生来说是非常必要的,不是等到毕业设计才去一点点学的。而且每名学生课题的不同,也督促了学生的独立思考独立解决问题的能力。
总的来说,数字系统课程设计给了我很多其他课程不能提供的锻炼机会,也收到了良好的效果。相信对于每一位参加课程的同学来说,这都是一段难忘而弥足珍贵的经历。
9、参考文献
1. 计算机结构与逻辑设计黄正瑾 高等教育出版社 2000
2. EDA技术及VHDL 蒋小燕,余伟均,张立臣 东南大学出版社 2008