news 2026/6/9 23:40:25

例说FPGA:可直接用于工程项目的第一手经验【2.4】

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
例说FPGA:可直接用于工程项目的第一手经验【2.4】

第10章 工程实例8——电子点菜单设计

本章导读

本章的工程实例至少结合了第4、6、8、9章的内容,集成实现了一个“电子点菜单”的雏形,虽然还不能称得上真正意义上的“点菜单”,但是已经非常接近实际产品了,相信在聪明的读者手中这个雏形很快就能摆上“大雅之堂”。话说回来,大家可要好好体会这个设计的精髓。

10.1 功能概述

民以食为天,随着经济的发展,人民的生活水平逐渐提高,“吃”在日常的生活中越来越重要,加上紧张的工作,人们逐渐更喜欢在外边的餐馆吃饭。由于顾客的增加,餐馆也出现了一些问题。比如,针对纸质菜单,由于无法根据采购原材料成本的变动实时调整菜品的价格,而不得不在纸质菜单上贴白纸条,这样每年至少需要更换2~3次纸质菜单,费时费力。另外,客人点餐服务员在手写单的过程中易出错、用时长,点餐效率低,在饭店繁忙的时候,服务员无法及时为顾客点餐,导致客人流失等。针对这些现象,电子点菜单应运而生。

本实例就是要实现一个简易版本的电子点菜单,主要完成产品的图像预存储、用户指令接收、图像实时显示和界面设计。系统功能框图如图10-1所示。

NIOS II处理器通过Avalon-MM总线与系统定制外设进行数据交互,主要的外设包括UART外设、Flash控制器、LCD控制器以及GPIO外设。UART外设用于接收上位机软件发送的图片数据,并且接收触摸屏校准指令。Flash控制器实现图片数据写入和读出用于显示。LCD控制器则用于实现NIOS II处理器写入当前所需图像数据的显示。GPIO外设模拟IIC时序驱动控制AD芯片(AW2803)转换的触摸屏坐标参数。

本实例的电子点菜单分三级、共31张图片,如图10-2所示。

NIOS II软件的整体流程如图10-3所示。在各种外设初始化后,首先让LCD显示主菜单图片;接着进入主循环,依次判断串口“下载”指令、串口通用指令或触摸屏中断事件的发生,在这些事件触发后,调用相应的处理函数。

10.2 装配说明

本实例除了主控的VIP核心板,还需要SF-USB子板和SF-L70子板。它们的连接示意如图10-4所示。VIP核心板的P2插座连接到SF-USB子板的P1插座,VIP核心板的P4插座连接到SF-L70子板的P3插座。SF-USB子板通过UART-USB插座P4连接到PC机,而SF-L70子板的P1和P2插座则分别连接到液晶屏的触摸屏和40PIN FPC连接器上。

10.3 IP核配置——FIFO配置

1.FIFO概述

FIFO(First In First Out),即先入先出,是一种典型的计算机数据或指令处理机制,和中国人所谓的“先来后到”理念有异曲同工之妙。而这里要说的FIFO存储器和前面带有地址可直接定位操作的ROM或RAM存储器不同,FIFO存储器没有地址定义;那你可能会认为FIFO存储器和移位寄存器差不多,还真“差不多”,但是FIFO存储器的输出可要比移位寄存器灵活,移位寄存器只要存储深度固定,基本上只能在存储器被“填满”或有固定个数的数据字节被“填满”时,我们才能够读出或输出数据,而FIFO存储器则一旦有数据写入或输入,随时都可以在读出或输出端进行操作,获得数据。

如图10-5所示,我们可以简单地认为FIFO存储器内部就是一条整齐划一的“队列”,操作起来就是一个挨着一个,并且井然有序。FIFO存储器的机理虽然简单,但是作用却异常强大,在多芯片数据交换传输的应用中,往往都会将FIFO存储器用作承前启后的“缓冲器”。

2.FIFO例化说明
ddr_avl_bridge.v模块中使用了3个FIFO,分别用于DDR2数据写入缓存和DDR2数据读取缓存。实际上,我们只需要例化两种类型的FIFO,即图10-6所示的名称为rdfifo_for_sdram和
wrfifo_for_sdram的两个FIFO。
为什么这里可以有两个名称为“rdfifo_for_sdram”的FIFO呢?其实,仔细看,你会发现这两个FIFO在“:”后面的名称不一样。一个为“rdfifo_dj_for_sdram_inst”,另一个
为“rdfifo_rf_for_sdram_inst”。我们可以先到ddr_avl_bridge.v模块的Verilog代码中查看一下这两个FIFO的例化。
//例化SDRAM读出数据缓存FIFO模块
rdfifo_for_sdram rdfifo_rf_for_sdram_inst(
.aclr(!local_rst_n || rdfifo_clr_r[3]),
.data(local_rdata), //128bit input
.rdclk(clk_33m),
.rdreq(lcd_rfreq),
.wrclk(phy_clk),
.wrreq(local_rdata_valid && rf_dj_flag),
.q(lcd_rfdb), //16bit output
.wrusedw(rfifo_rf_used)
);
//例化SDRAM读出数据缓存FIFO模块
rdfifo_for_sdram rdfifo_dj_for_sdram_inst(
.aclr(!local_rst_n || rdfifo_clr_r[3]),
.data(local_rdata), //128bit input
.rdclk(clk_33m),
.rdreq(lcd_djreq),
.wrclk(phy_clk),
.wrreq(local_rdata_valid && !rf_dj_flag),
.q(lcd_djdb), //16bit output
.w

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/6/7 11:09:44

**AI漫剧制作工具2025推荐,新手也能快速上手的创作利器

AI漫剧制作工具2025推荐,新手也能快速上手的创作利器 据《2025年中国数字内容产业白皮书》显示,2025年AI视频内容市场规模预计突破800亿元,其中AI漫剧因其制作门槛相对较低、内容形式新颖,成为个人创作者与中小团队入局的热门赛道…

作者头像 李华
网站建设 2026/6/9 22:47:30

英伟达 数字孪生 AODT 下载

登陆 docker login nvcr.ioUsername: $oauthtoken Password: 下载镜像 docker pull nvcr.io/nvidia/aerial/aodt-sim:1.4.0_devel docker pull nvcr.io/nvidia/aerial/aodt-sim:1.4.0_runtime docker pull nvcr.io/nvidia/aerial/aodt-gis:1.4.0 docker pull nvcr.io/nvidia/ae…

作者头像 李华
网站建设 2026/6/8 15:23:41

认知突围:练就看透本质的能力

打破信息茧房,跳出思维定式:不是刷更多信息,而是练会“看透本质”的认知能力 目录 打破信息茧房,跳出思维定式:不是刷更多信息,而是练会“看透本质”的认知能力 一、先破外部茧房:驯化算法,刺破“过滤气泡” 核心实操(依据:过滤气泡的算法驱动特性) 矫正误区 二、再…

作者头像 李华
网站建设 2026/6/8 14:25:43

什么是WiFi 6(802.11ax)

文章目录 Wi-Fi 6解决了什么问题Wi-Fi 6 vs Wi-Fi 5Wi-Fi 6核心技术Wi-Fi 6设备 WiFi 6(Wi-Fi 6),也被称为802.11ax,是继Wi-Fi 5 (802.11ac)之后的最新一代Wi-Fi工业标准。在Wi-Fi 6发布之前,Wi-Fi标准是通过从802.11b…

作者头像 李华
网站建设 2026/6/8 14:24:42

<span class=“js_title_inner“>.zone域名定义数字空间的边界</span>

在顶级域名百花齐放的今天,每一个后缀都承载着特定的品牌基因与情感投射。其中,".zone"作为一个极具空间感与界定感的词汇,正逐渐从通用的后缀中脱颖而出。它不仅仅是一个技术性的网址结尾,更是在数字世界中划定“专属领…

作者头像 李华