演示视频
本帖最后由 航天萪工 于 2021-5-24 18:25 编辑
(开幕:自己之前玩过一些FPGA,大部分都是ALTERA的XILINX,这次有机会使用到国产的FPGA还是很开心的,尤其这款芯片还有个嵌入的ARM硬核处理器,虽然这次设计没有用到。
PART1:我在本科的时候上数字电路实验课,使用的CYCLONE2片子,老师会留一些实验内容,什么3-8译码器,加法器,乘法器或者是分频器,数码管显示学号,最后大作业是做一个数字时钟,并且可以加速的那种。当时做实验因为第一次用,很多都不会,手忙脚乱的,老师也不怎么管,大佬们自己写,我们这种菜鸡就只能自己上网找或者等着大佬们做完直接抄,。倒也不是自己懒,就是单纯因为时间有限,而自己又不知道问题出在哪里,再加上学校也不是很重视,所以就变得越来越水。后来自己入门了FPGA,想着自己做一个验证平台,不需要麻烦老师,自己就可以根据平台给的提示完成实验。
PART2:我就是个渣渣,所以很多代码写的不规范或者很垃圾,还望大神们手下留情,也欢迎大家一起讨论FPGA,我自己在学的时候就有很多问题因为身边没有人交流导致入门很坎坷。软件部分,QT就随便一学,满足日常开发的需求就可以了,所以这次设计的QT特别垃圾,希望有大神可以帮帮我,我C++都是当c用的,,,因为不太会。)
感谢大家打开我这篇帖子,希望对你有所帮助,并欢迎大家评论指出问题。
一、设计思路:
在高校的数字电路课程中,要通过在FPGA器件上通过设计一些简单的时序或者组合逻辑电路深入学习与验证,但是每个人的做完的结果会有各种问题与错误,大大增加了老师的工作量,因此准备设计一个基于FPGA的验证模块,该模块可以通过插入到设计者的模块中,并使用探针采集数据并做初步分析,结果上传到上位机软件中,在上位机中分析结果,通过与预定的答案进行分析比对,给出得分,如果结果错误给出相应的错误原因与改正方法。
为了方便对采集结果快速分析,因此需要在上位机软件中进行,上位机预计采用QT平台开发,通过串口进行数据交互。上位机中将事先预制好要测试的题目或功能,同时会预留出扩展接口,可以自定义测试功能与方法,将测试内容下发至FPGA中,并通过与用户功能接口连接,下载至FPGA中根据上位机指令开始测试并在上位机中显示交互数据与结果。
二、实现目标:
1、该采集模块可以对用户设计的频率完成测量,频率范围1K~10MHz,采用等精度法测频;
2、该采集模块可以对用户设计的四位(至多八位)静态数码管完成显示数据采集,并上传至上位机判别实际显示内容与错误原因;
3、该采集模块可以对用户设计的四位(至多八位)动态显示数码管完成显示数据采集,并上传至上位机判别是否在指定时间内完成正确数据显示,并对错误内容给出定位与解决方法;
4、该采集模块可以对用户设计的基本逻辑单元(如3-8译码器、加法器等)完成输入与输出采集,并将采集结果上传至上位机中进行判别,并对错误内容给出错误定位与解决方法;
5、该采集模块可以完成用户设计的数码管时钟显示实验完成不同时刻的数据采集,并将采集结果上传至上位机中,对设定的时标的显示内容进行判别,并对错误内容给出定位与解决方法。
三、目前完成内容:
1、完成对用户设计的模块的频率采集与测量,使用等精度测量法实现,并将采集数据通过串口上传至上位机;
2、完成对用户设计的四位静态数码管显示内容的采集,并将要显示的内容与实际的显示内容通过串口上传至上位机中进行判别;
3、上位机采用QT C++开发,可以后续对上位机功能进行添加,但是对于相应错误的判别代码未完成,待下一版完成;
4、本设计的全部模块均采用RTL逻辑设计,包括串口部分,方便在不同的FPGA平台上移植和使用。
四、硬件顶层设计框图:
系统总体设计框图如图4.1所示:
图4.1硬件总体框图
五、各模块设计说明:
1、等精度测频模块:
等精度测量的一个最大特点是测量的实际门控时间不是一个固定值,而是一个与被测信号有关的值,刚好是被测信号的整数倍。在计数允许时间内,同时对标准信号和被测信号进行计数,再通过数学公式推导得到被测信号的频率。由于门控信号是被测信号的整数倍,就消除了对被测信号产生的±l周期误差,但是会产生对标准信号±1周期的误差。等精度测量原理如图5.1.1所示。
图5.1.1等精度测频原理
根据等精度测频原理,设计的代码框图如下图5.1.2所示:
|