作业的提交方法
- 请注册一个CSDN网站的账号, 使用CSDN的Markdown 编写博客页面。
- 完成以下实验任务,并且编写实验报告的博客。
- 教师的CSDN博客地址,http://blog.csdn.net/duwt_lab
- 请在微信群里通知老师验收作业,另外,请在CSDN上给教授发一条私信,注明自己的姓名和专业
实验 1. 探索定点数
- 使用二进制表示数字,是计算机科学中最基本的问题之一。
- 使用FPGA进行数学运算,本质上就是要把数学模型、公式,映射成数字电路。
- 用FPGA实现定点数运算,对于设计运算单元电路很重要。
- 请自行设计若干实验,实现和验证课堂上讲过的关于定点数的知识,例如:
- 2补码的溢出回绕特性
- 不同长度的2补码数据进行运算时,先进行符号扩展和数据对齐,然后再进行加、减法运算
- 乘法和加法对字长的影响,验证2补码整数的乘法和加法运算
- 定点数实验,验证带小数位的定点数的乘加运算
- 仿真工具,可以使用Modelsim,或是Quartus的波形仿真,也可以使用Matlab辅助
- 仿真验证通过之后,在Quartus里面编译一下电路,关注你的电路消耗了多少FPGA资源,这是很有用的经验
- 请把完成的所有实验内容写在一篇博客里,文档尽量条理清楚,便于教师阅读
实验 2. 探索 DDS 和 EDA 工具
Signaltap 和 Matlab
建议设计如下
- 首先设计一个DDS, 50MHz的时钟速率,输出波形频率自行设定,输出数据格式为2补码
- DDS的参数配置最好不要和老师给的例子相同
- 首先在Signaltap里,观察波形的正确性,然后把Signaltap的数据导入到Matlab,分析频域结果
思考题
- 如何用 Matlab分析该正弦信号的频率
- 上面你用的分析方法,其频率分析精度是多少?这个分析精度和那些参数有关系?
- 如何能验证你的频率分析方法是正确的?我的意思是,假设你要生成1MHz的正弦波,但是实际上,你生成的正弦波的频率是错的,并且你的Matlab分析方法也不对,在这种情况下,即使你生成了正确频率的正弦波,你的分析方法也会告诉你频率不对。
ModelSim 和 Matlab
建议设计如下
- 在许多大型设计中,进行Quartus编译和FPGA电路下载是电路设计流程中比较后期的事情。
- 进行电路编译之前,首先会进行HDL仿真,常用的工具是Modelsim
- DDS电路是非常利于Modelsim仿真的设计,因为它只需要一个CLK信号和一个RST信号
- 请把你的DDS电路用ModelSim仿真一下, 首先在观察信号的输出波形,然后将输出数据导出到文本文件中
- 用Matlab从文本文件中读入你的DDS波形
- 再次分析你的波形频率
再次探索定点数
- 单个信号的缩放和多个信号的叠加,是信号处理中的常用手段
- 请合成2个正弦波形 S1和S2,其中S1乘以系数0.7得到信号S1M,S2乘以系数0.8得到信号S2M
- 把信号S1M和S2M相加,得到信号S12MA
- 所有的数据都用定点补码表示, 其中 S1和S2的动态范围都是(-1, 1)
- 使用Modelsim进行仿真,观察S1M,S2M,S12MA
- 把信号S12MA导出到文本文件,然后导入Matlab,分析其频率成份。
单音调幅信号
- 我们从通信原理课本中学过,使用单音正弦信号对载波信号进行双边带幅度调制。
- 合成一个双边带AM调制信号,载波频率1MHz,调制信号 1KHz,采样率50MHz
- 使用Modelsim仿真,观察波形,使用Matlab观察频谱
- 使用Signaltap抓取电路输出波形,使用Matlab观察频谱
- 把调制信号的数据格式从补码映射为无符号数,找老师要DAC输出子卡。使用示波器和收音机测试信号,有条件的使用频谱仪分析信号