1.前言

研究生课程要求设计一个电子相框,使用FPGA驱动VGA显示器并能使用无线传输的方式完成图像的传输并将图像缓存后显示到VGA显示器上,我根据该基础需求上,通过更换LATTICE的FPGA以及增加了一些独特的定制化功能,在降低成本的同时获得了更多有意思的小功能,包括能够根据不同状态显示不同提示图像,显示当前环境温湿度,显示接收图像时的进度条,最重要的是将经典红白机NES的6502CPU移植上去,能够运行所有红白机游戏了,最终得到了一个兼具娱乐和生活使用方式的小作品,我给他取名叫Nano_Viewer,下面就是关于Nano_Viewer的设计步骤和最终成品介绍。

2.开发平台

本次所设计的作品Nano Viewer是基于现场可编程门阵列(FPGA)完成,至于什么是FPGA以及其工作原理在此不过多介绍,在芯片型号的选择上,使用lattice公司的ECP3系列,型号为LFE3-35EA,具有35K逻辑资源和1.7Mbit的BRAM,对于本次设计完全够用。至于为什么不选择Intel家的Cyclone IV系列或者Xilinx加的Artix-7系列,主要还是由于芯片价格差距实在过大,同资源情况下,如今lattice型号价格只有I或X家的1/3,可以说是性价比很高了。

开发所使用的EDA工具为lattice家的lattice Diamond软件,界面相对于Vivado和Quartus看起来有些复古,如图1所示,不过功能都大差不差,按照正常的开发流程走即可。

3.硬件设计

本次Nano Viewer作品的硬件框图如图2所示,由于想要实现的是一个便携的显示终端,所以就加入了电池和相应的充放电管理电路,电源管理电路,Lattice ECP3 FPGA芯片,还有温湿度检测传感DHT11,蓝牙收发模块以及用于缓存的SRAM芯片以及VGA接口。

使用Altium软件按照设计要求设计电路原理图以及PCB板,设计结果如图3和所示。

看看3D显示,效果还不错。

之后就是打板回来进行焊接与调试。

最终得到的硬件成品实物如下图所示。

4.程序设计

使用Verilog语言和VHDL语言设计本次的Nano Viewer,其中VHDL语言为6502红白机CPU实现,剩余部分使用Verilog完成。Nano Viewer的整体系统结构如下图所示。

其主要工作方式就是由蓝牙模块接收图像数据和控制数据并根据不同控制命令跳转到不同的状态,同时各外部接口负责相应的协议实现。具体系统的实现细节可以参考源码,因为确实内容比较多不太好介绍。

使用lattice diamond软件对设计内容进行综合和实现,得到的RTL视图如下图所示。将生成的bit流文件烧录到FPGA当中,完成设计。

5.功能测试

使用安卓手机端调试APP对Nano Viewer进行调试。

将Nano Viewer连接好电池,同时按下开机按键,此时显示当前设备电量

将Nano Viewer连接至VGA接口线缆,显示器点亮进入初始界面,此时提示无图像可供显示,可上传显示图像或进入游戏模式。同时显示当前温湿度信息。

使用APP上传图像,显示为图像正在上传状态,并显示接收进度条如下图所示。

接收完成后显示图像,同时也会显示温湿度信息。

在显示状态下还可以重新发送图像以更换显示图片。

同时在准备界面或者图像显示界面,可发送指令进入游戏模式,默认内部存放的游戏为90坦克大战,在游戏模式内可以使用蓝牙界面控制游戏角色。

6.总结

基本功能都已经实现,后续可以考虑做一个更加精美的安卓端APP来实现更多功能。

就像下面这种

7.附件

FPGA端Diamond工程

硬件设计图纸和PCB

基于LATTICE ECP3 FPGA的 Nano_Viewer设计(开源)相关推荐

  1. 基于Lattice XO2-4000HC FPGA核心板及电子森林综合训练底板的ADC数字电压表及OLED显示设计(Verilog)

    目录 :pushpin: 前言 :space_invader: 设计模块及设计思路 :fried_shrimp: ADC驱动及数码管显示模块:adc_driver2seg ADC驱动模块(已验证) 数 ...

  2. 基于C6748 DSP+FPGA电能质量检测仪设计和实现

    随着清洁能源的大规模并网以及电力电子元件的广泛应用,公用电网的电能质量面临愈发严重的挑战.同时,工业生产和社会生活朝智能化方向发展使得更多的电力系统负荷对电能质量敏感,因此用户也明显提高了对电能质量的 ...

  3. 【示波器】基于FPGA的数字示波器设计实现

    1.软件版本 quartusii 2.本算法理论知识 框图结构: 1.缓存里包含有触发控制和触发存储器: 2.由设计指标需要1GsPs的采样率,最后的数据流要降到到250MbPs: 3.从指标来看从波 ...

  4. pcs和serdes_对Lattice ECP3/ECP5器件中的SerDes/PCS进行了简要的介绍

    FPGA发展到今天,SerDes (Serializer - Deserializer) 基本上是标配了.从PCI到PCI Express,从ATA到SATA,从并行ADC接口到JESD204,从RI ...

  5. SSPI方式配置Lattice ECP3系列FPGA

    本文主要包括通过SSPI方式配置Lattice ECP3系列FPGA的一些说明 最近项目中用到了Lattice ECP3,项目中使用ARM通过SSPI方式配置FPGA.所以这里对配置方法做一些笔记待以 ...

  6. 基于低功耗蓝牙和微信小程序的门禁系统(FPGA课设设计)

    基于低功耗蓝牙和微信小程序的门禁系统(FPGA课设设计) 文章目录 基于低功耗蓝牙和微信小程序的门禁系统(FPGA课设设计) 一.低功耗蓝牙(BLE)的配置和与FPGA通信代码 1.1 低功耗蓝牙的介 ...

  7. 计算机组成原理认识fpga,计算机组成原理课程设计-基于EDA和FPGA技术的8位模型计算机的设计与实现_精品.doc...

    计算机组成原理课程设计-基于EDA和FPGA技术的8位模型计算机的设计与实现_精品 目录 前言2 第一章 课程设计内容2 1.1 实验要求2 1.2 实验目的2 第二章 实验原理及方案2 2.1 实验 ...

  8. 基于FPGA的FFT设计

    基于FPGA的FFT设计 1.verilog源代码还有实验报告 2.FFT的主要算法 FFT算法并不是一种新的理论算法,它只是用来计算DFT的快速算法,所以它是以DFT为基础的.本课题采用的是基-2 ...

  9. stm32采集脉冲信号_基于STM32+FPGA的数据采集系统的设计与实现

    引言 由于火控系统工作环境特殊,所需采集信号复杂多样,传统的以微控制器或PC为主的采集系统往往难以胜任.针对上述问题,提出了一种基于STM32+FPGA的数据采集系统的设计方案,该方案不仅能够完成对多 ...

最新文章

  1. centos修改主机名整理(勿喷)
  2. C语言 读取文件内容
  3. java mysql blob 存储图片,Java实现用Mysql存取图片操作实例
  4. OPEN(SAP) UI5 扫盲
  5. C# 系统应用之透明罩MyOpaqueLayer实现360界面阴影效果
  6. mysql 存储过程的使用;
  7. windows 管理员权限编辑文件
  8. 删除WPS 遗留的qingnse64XXX.dll
  9. 如何制作一个商城小程序?
  10. activitimq集群搭建_activemq集群的搭建
  11. zheng win 环境搭建
  12. HDU-4747 二分+线段树
  13. 程序猿的24个段子:栈和队列的区别是啥?
  14. 青箬笠,绿蓑衣,斜风细雨不须归
  15. 解决RecyclerView内子条目可滑动导致的滑动冲突
  16. 一些冷门的JS技巧 顶
  17. k8s源码分析 pdf_《k8s-1.13版本源码分析》上github
  18. html 实现excel表格分页打印,excel分页-用了这么多年Excel才知道,按下这个键,一张纸便可打印全部内容...
  19. 面试官让你说说你的缺点,你该怎么回答
  20. Windows系统C语言代码一览

热门文章

  1. 中文名字和英文名字正则匹配
  2. win7搜索文件内容
  3. C#调用RabbitMQ实现消息队列
  4. 中国(成都)区块链博物馆为区块链正名
  5. 汉堡式折叠html,3种超酷汉堡包菜单按钮变形动画特效
  6. 蜡笔小新钢达姆机器人_蜡笔小新作文500字_小学四年级作文 - 作文库
  7. mysql 启动失败 详情_mysql启动失败一例
  8. awesomium -- 出色的Web浏览插件
  9. 2021-04-19
  10. 《SysML精粹》学习记录--第九章