资料介绍
描述
在这个项目中,SPI 接口代码是用 Verilog 编写的,用于连接来自 Pmod-ALS 的 8 位 ADC。8 位二进制转换为 BCD 并显示在 7 段显示器上。Verilog 代码是在 Basys 3 板上的 Artix-7 FPGA 上合成的。
关于我.. 我已经开始学习 Verilog,从硬件的角度思考是非常充实和令人兴奋的。该项目需要更改和改进,我很高兴知道您对此有何看法。
概述
该项目由三个模块组成,如下所示。
- spi_interface
- 双重涉猎
- 七段显示

模块组织:

模块一:SPI接口
(模块:spi_interface)
Pmod 环境光传感器 (ALS) 具有一个带有高速 SPI 接口的 8 位 ADC(来自 Texas Instruments 的 ADC081S021)。

由于在硬件上调试时序非常重要,因此我分配了 3 个 I/O 用于监控 Digilent Analog Discovery 上 Pmod ALS 的 CS、SCLK、SDO 线。
注意:即使在仿真中分析和调试时序(通过测试台代码),在逻辑分析仪上连接一些信号也变得非常有必要——在下图中用蓝色框表示。



架构:SPI接口
传感器规范描述了以下时序图,它是 verilog spi_interface 代码的完整基础。
这是通过两个 8 位计数器和一个 8 位寄存器实现的。
reg [7:0] data_counter; // Free running counter till 20, to time CS
reg [7:0] clk_div; // Prescaler 100 MHz FPGA clock to 1.92 MHz SPI Clock
reg [7:0] r_RX_Byte = 8'b0000_0000; // MISO: Received 1 byte of data from PMOD_ALS

时钟分频器(clk_div):从主时钟(Basys 3 板上的 100 MHz)导出 spi 时钟(1.92 MHz)。

Pmod ALS 上的 ADC 将光强度的模拟值转换为数字值,然后将其串行化以在 SPI 总线上传输。
前 3 位和后 4 位是零和 1 个三态位。中间的 8 位是数据。我们的 verilog 代码在 spi 时钟的帮助下同步捕获这些数据。
数据计数器:data_counter 是一个自由运行的计数器,由 spi 时钟计时。它被调整为触发数据读取和控制从/到 Pmod-SDO 的芯片选择。
一旦 data_counter 变为 20,它就会被重置为 0。在 16 时,CS 按照时序图的要求被拉高。

注意:CS 可以作为该模块的输入,以便顶层应用程序可以命令 CS 引脚。
SDO数据读取:按照时序图图 6 将 SDO 数据读取到 8 位寄存器(MSB 在前)。

模块 2:双重涉猎
读取的 8 位数据被转换为三个 4 位 BCD 矢量,以便能够在 7 段显示器上的每个十进制数字处驱动每个 LED。请在https://www.nandland.com/vhdl/modules/double-dabble.html阅读 Russel 的这篇漂亮的文章
我使用了他的 double dabble 算法的 verilog 代码并纳入了这个项目。谢谢拉塞尔:)

模块三:七段显示
该模块将 4 位 BCD 矢量转换为驱动 Basys 3 板上四个七段显示器的 LED。

有关七段显示的详细信息,请参阅 Basys 3 参考手册。https://reference.digilentinc.com/programmable-logic/basys-3/reference-manual
模拟:
请在 GitHub 存储库中找到测试平台代码。
所有三个模块都被实例化。


串行数据在 SDO 线上传输,用于仿真和验证。有待验证双dabble算法和七段显示器的阳极/阴极控制是否能正常工作。
结果:



概括
与这个项目一起工作非常有趣。需要改进以降低的频率传输数据字节以及在七段显示模块中,以便数据字节的所有三位数字都清楚地显示在显示器上。我很高兴听到您对这个项目的想法。
最重要的是特别感谢来自nandland.com的 Russel和来自Simply Embedded的 Greidi Ajalik 。我从你那里学到了很多东西,并感谢你所做的工作。
感谢您的阅读!
- STM32CubeMX-HAL库的SPI接口使用
- 基于Verilog的SPI接口设计
- 第9章:串行外设接口模块(SPI)PPT下载 36次下载
- ST公司的M25Pxx SPI flash memory的verilog仿真模型
- 通过Verilog在SRAM读写程序源代码 9次下载
- 基于Verilog的FPGA与USB 2.0高速接口设计资料下载
- 如何在FPGA中实现SPI4.2接口 13次下载
- 使用Verilog实现SPI串行总线接口的资料和源代码免费下载 9次下载
- SPI总线接口在OLED模块中的应用详细说明 7次下载
- STM32F4串行外设接口(SPI)的源代码的详细资料免费下载 50次下载
- Verilog 入门的实例代码 20次下载
- verilog_代码 12次下载
- ENC28J60 spi 接口 以太网 网络模块 提供 代码 22次下载
- verilog代码规范 24次下载
- verilog_代码资料 37次下载
- Verilog 与 ASIC 设计的关系 Verilog 代码优化技巧 218次阅读
- 如何自动生成verilog代码 391次阅读
- Verilog语法中运算符的用法 1118次阅读
- 分享一些优秀的verilog代码 高质量verilog代码的六要素 1207次阅读
- Verilog代码封装后门访问 907次阅读
- SPI接口如何帮助减少系统板设计中的数字GPIO数量 1190次阅读
- 什么样的Verilog代码风格是好的风格? 1570次阅读
- SPI接口简介 如何减少系统电路板设计中的数字GPIO数量 2802次阅读
- 高质量Verilog代码有什么特点 1963次阅读
- 嵌入式硬件通信接口协议中的串行通信接口-SPI 1654次阅读
- 蜂鸟FPGA开发板及蜂鸟JTAG下载器讲解说明 1w次阅读
- 基于FPGA的SPI Master Interface设计 1.1w次阅读
- 没有直接可用的Pmod驱动怎么办?教你一招 2356次阅读
- 无驱动问题的Zynq搭配Pmod开发解决方案 1971次阅读
- Verilog代码设计案例分析 4254次阅读
下载排行
本周
- 1NB-IoT芯片厂商的资料说明
- 0.31 MB | 22次下载 | 1 积分
- 2智慧监狱建设的核心终端—智慧监仓屏
- 0.25 MB | 2次下载 | 免费
- 3PC318C016M/D 200V半桥栅极驱动器技术手册
- 0.77 MB | 2次下载 | 免费
- 45.0SMDJ200A单向TVS瞬态抑制二极管规格书
- 0.88 MB | 1次下载 | 免费
- 5PC318C041EQ 200V半桥栅极驱动器技术手册
- 0.50 MB | 次下载 | 免费
- 6PC318C042NM 200V半桥栅极驱动器技术手册
- 0.55 MB | 次下载 | 免费
- 7技嘉H110主板IT8628E_BX IO电路图资料
- 2.61 MB | 次下载 | 1 积分
- 8H110主板CPU PWM芯片ISL95858HRZ-T核心供电电路图资料
- 0.63 MB | 次下载 | 1 积分
本月
- 1元宇宙深度解析—未来的未来-风口还是泡沫
- 6.40 MB | 241次下载 | 免费
- 2元宇宙底层硬件系列报告
- 13.42 MB | 184次下载 | 免费
- 32022 年展望報告 – 半導體產業
- 1.43 MB | 136次下载 | 免费
- 4晶振与滤波器应用电路《电子工程师必备:元器件应用宝典》
- 1.57 MB | 90次下载 | 免费
- 5汽车电子行业深度解析:智能化与电动化方兴未艾
- 6.47 MB | 71次下载 | 免费
- 6中国DPU行业白皮书
- 23.80 MB | 37次下载 | 免费
- 7晶科鑫代理线-微盟电子2021年度产品目录选型手册
- 14.75 MB | 27次下载 | 免费
- 8NB-IoT芯片厂商的资料说明
- 0.31 MB | 22次下载 | 1 积分
总榜
- 1matlab软件下载入口
- 未知 | 935137次下载 | 10 积分
- 2开源硬件-PMP21529.1-4 开关降压/升压双向直流/直流转换器 PCB layout 设计
- 1.48MB | 420064次下载 | 10 积分
- 3Altium DXP2002下载入口
- 未知 | 233089次下载 | 10 积分
- 4电路仿真软件multisim 10.0免费下载
- 340992 | 191425次下载 | 10 积分
- 5十天学会AVR单片机与C语言视频教程 下载
- 158M | 183352次下载 | 10 积分
- 6labview8.5下载
- 未知 | 81602次下载 | 10 积分
- 7Keil工具MDK-Arm免费下载
- 0.02 MB | 73822次下载 | 10 积分
- 8LabVIEW 8.6下载
- 未知 | 65991次下载 | 10 积分
电子发烧友App






创作
发文章
发帖
提问
发资料
发视频
上传资料赚积分
评论