孩子都能学会的FPGA:第三十三课——用FPGA实现一个通用的SPI主机接收模块

news/2024/6/3 4:29:12 标签: fpga开发, fpga

(原创声明:该文是作者的原创,面向对象是FPGA入门者,后续会有进阶的高级教程。宗旨是让每个想做FPGA的人轻松入门作者不光让大家知其然,还要让大家知其所以然!每个工程作者都搭建了全自动化的仿真环境,只需要双击top_tb.bat文件就可以完成整个的仿真(前提是安装了modelsim),降低了初学者的门槛。如需整个工程请留言(WX:Blue23Light),不收任何费用,但是仅供参考,不建议大家获得资料后从事一些商业活动!

上节课完成了通用SPI主机发送模块的FPGA设计,那本节课完成通用SPI主机接收模块的FPGA设计。

主机的接收模块是主机发送SCK和SS信号,同时解析从机发送的MISO信号,完成数据的解析。还是观察下面的图形,在CPHA=0时,在每个SCK的第一个跳变沿来采集MISO的数据;在CPHA=1时,在每个SCK的第二个跳变沿来采集MISO的数据。

根据上面的分析,我们开始FPGA程序的设计,接口信号如下所示。

其它信号的设计和SPI主机的发送模块基本一样,就是spi_state_cnt的计数值增加了FRE_DIV/2。该模块的shift_en信号和SPI主机发送模块正好差半个SCK时钟周期,通过shift_en信号完成从机MISO信号的接收和串并转换。

新建仿真文件,模拟SPI从机发送16位的随机数据,主机完成数据的接收。

如下所示,CPOL=0CPHA=0,在SCK时钟的第一个变化沿采集MISO线上的数据,shift_en在SCK的上升沿使能,时序正确。

如下所示,CPOL=1CPHA=0,在SCK时钟的第一个变化沿采集MISO线上的数据,shift_en在SCK的下降沿使能,时序正确。

如下所示,CPOL=0CPHA=1,在SCK时钟的第二个变化沿采集MISO线上的数据,shift_en在SCK的下降沿使能,时序正确。

如下所示,CPOL=1CPHA=1,在SCK时钟的第二个变化沿采集MISO线上的数据,shift_en在SCK的上降沿使能,时序正确。


http://www.niftyadmin.cn/n/5269418.html

相关文章

[Java][方法引用]综述以及静态/成员中的其他与本类方法讲解

方法引用的知识层次的构建&#xff1a; 1.引用静态方法 2.引用成员方法2.1 引用<其他类>的成员方法2.2 引用<本类>的成员方法2.3 引用<父类>的成员方法 3.引用构造方法 4.其他的调用方式4.1 使用<类名>引用<成员方法>4.2 引用<数组>的<…

【计算机组成与体系结构Ⅱ】多处理器部分讨论题目

多处理机课堂讨论 1.并行计算体系结构有哪些? SIMD、MIMD 2.多处理机的存储结构有哪些? 对称式共享存储器结构、分布式共享存储结构 3.什么是多处理机的一致性? 如果对某个数据项的任何读操作均可得到其最新写入的值&#xff0c;则认为这个存储系统是一致的。 4.监听协议的工…

细胞培养之一二三:哺乳动物细胞培养污染问题和解决方案

一、哺乳动物细胞污染是什么[1]&#xff1f; 污染通常是指在细胞培养基中存在不需要的微生物、不需要的哺乳动物细胞和各种生化或化学物质&#xff0c;从而影响所需哺乳动物细胞的生理和生长。由于微生物在包括人体特定部位在内的环境中无处不在&#xff0c;而且它们的繁殖速度…

Modbus转Profinet网关使用方法

Modbus转Profinet网关&#xff08;XD-MDPN100/200&#xff09;是用于将Modbus协议和Profinet协议进行转换并进行通迅的设备。Modbus转Profinet网关&#xff08;XD-MDPN100/200&#xff09;无论是新项目还是改造项目都可轻松配置完成通迅互联。 正确的安装和配置对于确保设备的正…

BIM 技术:CIM (City Information Modeling) 1-7 级

本心、输入输出、结果 文章目录 BIM 技术&#xff1a;CIM &#xff08;City Information Modeling&#xff09; 1-7 级前言城市信息模型&#xff08;CIM&#xff09;概述城市信息模型分级介绍CIM 1CIM 2CIM 3CIM 4CIM 5CIM 6CIM 7 花有重开日&#xff0c;人无再少年实践是检验真…

网络入门---守护进程

目录标题 什么是守护进程会话的理解setsid函数daemonSelf函数模拟实现测试 什么是守护进程 在前面的学习过程中我们知道了如何使用TCP协议和UDP协议来实现通信&#xff0c;比如说登录xshell运行了服务端&#xff1a; 然后再登录一个xshell运行客户端并向服务端发送信息&#…

基于JavaEE智能实时疫情监管服务平台设计与实现

末尾获取源码 开发语言&#xff1a;Java Java开发工具&#xff1a;JDK1.8 后端框架&#xff1a;SSM 前端&#xff1a;采用JSP技术开发 数据库&#xff1a;MySQL5.7和Navicat管理工具结合 服务器&#xff1a;Tomcat8.5 开发软件&#xff1a;IDEA / Eclipse 是否Maven项目&#x…

nlohmann-json使用

nlohmann/json nlohmann/json是一个使用现代c编写的一个json库&#xff0c;该库是head-only的。 json介绍 关于json的介绍可以参考&#xff1a;CJSON简单介绍 使用 直接包含 single_include/ └── nlohmann├── json_fwd.hpp└── json.hpp一般只要包含json.hpp&…