连接SPI接口器件 - 第一部分

最新更新时间:2021-11-29来源: 互联网关键字:SPI  接口器件  FPGA  莱迪思 手机看文章 扫描二维码
随时随地手机看文章

image.png


LEC2 Workbench系列技术博文主要关注莱迪思产品的应用开发问题。这些文章由莱迪思教育能力中心(LEC2)的FPGA设计专家撰写。LEC2是专门针对莱迪思屡获殊荣的低功耗FPGA和解决方案集合的全球官方培训服务供应商。


莱迪思CrossLink™-NX FPGA拥有丰富的特性,可加速实现高速和低速接口。本文(系列博文的第一篇)描述了使用CrossLink-NX FPGA连接基于SPI的外部组件。第一篇博文介绍了使用两个时钟域实现连接DAC(亚德诺半导体公司的AD7303 DAC)的SPI接口。第二篇博文将介绍使用单个时钟域实现连接ADC(亚德诺半导体公司的 ADC AD7476)的SPI接口。两个案例中呈现了两种截然不同的实现接口的方法。


两个时钟域的实现方案(dac_2c)


亚德诺半导体公司(ADI)的AD7303模块用作外部DAC。图1显示了接口的时序图和时序参数。在本例中,SCLK频率为30 MHz。时序参数t4、t5和t6在时序约束规范时尤其需要关注,它们将在set_output_delay约束中使用。


 image.png

图1:时序图和时序特征



两个时钟域解决方案的实现如图2所示。


image.png

图2:两个时钟域SPI接口的实现


使用的参数:


  • 输入时钟频率:100 MHZ

  • 内部时钟CLK_120频率:120 MHZ

  • 内部时钟CLK_30频率:30 MHZ

  • 生成的时钟dac_sck:30 MHZ


PLL_120_30


PLL从外部时钟CLK(100 MHz)生成两个内部相位同步时钟CLK_120和CLK_30。


dac_sample_gen模块


dac_sample_gen模块为dac_fsm生成采样信号(转换)。采样信号开始向DAC传输数字数据。采样率通过sample_select [1:0]信号设置,如表1所示。dac_sample_gen的框图如图3所示。


image.png

表1:采样率设置


image.png

图3:dac_sample_gen的框图


mode_select控制信号控制方波信号或三角波信号的生成,作为DAC的输入数据。


sync_stage模块


dac_sample_gen模块与CLK_120一起工作。控制单元dac_fsm是CLK_30域的一部分。sync_stage模块将转换信号从CLK_120域传输到CLK_30域。来自dac_fsm的相应信号从CLK_30域传输到CLK_120。sync_stage的框图如图4所示。


image.png

图4:sync_stage的框图


dac_fsm模块用于双时钟实现方案


dac_fsm模块控制生成传输到DAC的控制/数据信号。为了遵循图1给出的t4、t5和t6的值,dac_fsm在CLK_30的下降沿工作。Dac_fsm作为状态机实现。


image.png

图5:控制结构dac_fsm状态机


转换信号被识别后,bit_count计数器加载值15。串行数据在时钟信号CLK_30的下降沿输出到dac_sdata上。传输16位数据后,dac_fsm再次发出就绪信号并等待下一个转换信号。



约束两个时钟域解决方案的设计


1.约束时钟CLK


image.png


2. 约束时钟CLK_120和CLK_30


无需明确定义CLK_120和CLK_30这两个时钟信号,因为它们会由设计软件自动定义。这两个时钟也称为自动生成时钟。


image.png


3. 约束dac_clk


连接到端口dac_sck的时钟信号是内部时钟CLK_30的副本。该信号被外部DAC解读为时钟。因此,该信号也必须被定义为时钟,便于正确描述t4、t5和t6的时间要求。该时钟即所谓的手动生成时钟。

image.png


4. 约束DAS输入/FPGA输出


时间值t4、t5和t6描述了外部模块的setup/hold要求。这些要求使用 set_output_delay约束进行描述。


image.png

运行两个时钟域解决方案的时序分析

时序分析报告显示了两个时钟信号CLK_120和CLK_30之间的关系。


 image.png

image.png

注意CLK_120和CLK_30的跨时钟域参数,反之亦然。这正是我们所期望的。

对输出信号dac_sync和dac_sdata的分析展示了基于set_output_delay约束实现的setup slack和hold slack。


 image.png


总结


总之,两个时钟域提供了一些功耗方面的优势,因为设计的一部分以较低的速度运行。此外,时序约束也很容易指定。该项目(dac_2c)可在LEC2索取。欲获取项目副本,请通过info@lec2-fpga.com与我们联系。


关键字:SPI  接口器件  FPGA  莱迪思 编辑:张工 引用地址:http://news.eeworld.com.cn/qrs/ic555903.html

上一篇:锐志天宏选择莱迪思半导体FPGA用于其CNC系统设计
下一篇:保护隐私 提升续航,莱迪思sensAI用FPGA实现网络边缘AI 网络

推荐阅读

B001-Atmega16-SPI Flash
主要内容:第一步:SPI的结构第二步:SPI的初始化第三步:Atmega16的SPI自发自收第四步:与SPI Flash连接(GD25Q32B)第五步:读取SPI Flash的RDID(GD25Q32B)第六步:SPI Flash操作接口(GD25Q32B)第七步:SPI接口管理器第八步:同时操作三个SPI Flas-------------------------------------------------------------------------------------------------------------------------------------开发环境:AVR Studio 4.19
发表于 2022-01-18
B001-Atmega16-<font color='red'>SPI</font> Flash
stm32入门笔记(三)RT-Thread 当中spi和SFUD的移植问题解决方案
系统的方便性,让我开始了rtt的学习。但是在添加spi来读取外部FLASH的时候,遇到了一些情况。例如,找不到设备,或者说无法读取FLASH的ID。下面通过介绍一套完整的流程来帮助大家熟悉。首先。cube mx。配置spi 2为打开然后在menuconfig当中实现对驱动的定义和添加。最后在里面添加,关于spi的驱动和sfud。然后生成工程。最后添加代码测试:https://www.rt-thread.org/document/site/programming-manual/device/spi/spi/可以得到结果。 
发表于 2022-01-10
stm32入门笔记(三)RT-Thread 当中<font color='red'>spi</font>和SFUD的移植问题解决方案
4412 SPI驱动
1.Linux主机驱动和外设驱动分离思想(I2C驱动里有)SPI驱动总线架构:SPI核心层(x),SPI控制器驱动层(x),SPI设备驱动层(√)。前面两个设备驱动搞明白了可以去看 2.教程中介绍:SPI函数接口(API):简单介绍SPI协议,硬件原理(4412datasheet) 3.教程中介绍:SPI函数接口(API):简单介绍SPI协议,硬件原理(4412datasheet)SDI(数据输入),SDO(数据输出),SCLK(时钟),CS(片选)SPI(rfid模块)的硬件基础知识(增加reset)SPI CLK管脚复用:Android4.0(wifi不能用) rfid的驱动配置:Device
发表于 2021-12-30
4412 <font color='red'>SPI</font>驱动
STM32模拟SPI通信
(1)更改GPIO配置由于没有使用到硬件的SPI,那么将硬件初始化SPI部分进行删除,取消GPIO的复用功能,然后更改MOSI和SCLK引脚为输出模式,MISO更改为输入模式。(2)改写uint8_t SPI1_SendByte(uint8_t byte)函数void w25qxx_init(void){ /*!< Enable GPIO clocks,使能GPIOB硬件时钟 */ RCC_AHB1PeriphClockCmd( RCC_AHB1Periph_GPIOB, ENABLE); //端口配置 PB3 PB5 GPIO_InitStructure.GPIO_Pin = GPIO_Pin_3
发表于 2021-12-16
STM32模拟<font color='red'>SPI</font>通信
ATmega88 SPI数据模式与时序
ATmega88有四种 XCKn (SCK)相位与极性的组合与串行数据有关,具体由 UCPHAn与UCPOLn决 定。 数据传输的时序图请见 Figure77。 数据位的移出与锁定发生在 XCKn 信号的相反边沿,以保证有足够的时间使数据稳定。UCPOLn 与 UCPHAn 的功能总结见 Table86。改变这两位的设置将破坏正在进行的通讯。 。
发表于 2021-12-14
ATmega88 <font color='red'>SPI</font>数据模式与时序
【STM32】0.96寸OLED显示屏(7针SPI协议)软件模拟SPI
概述某宝上买的OLED,IIC/SPI都可以,买来看的时候发现背面焊的是SPI。板子上又没有硬件SPI,只好用软件模拟SPI。很久之前学的了,现在把它写在CSDN上,各位大佬如有什么想法,欢迎评论!(PS:文末会附上此工程的全部文件,欢迎下载交流)3.1硬件设计硬件方面不多讲,直接看某宝上图片。某宝上介绍的比较详细,需要注意的是这个OLED可以焊接电阻R1~R4中的某几个来选择IIC或者SPI协议,详情见以下图片3.2软件设计3.2.1编程要点1、初始化GPIO口来模拟SPI,每个人设置的GPIO口不同,开发板与OLED接线也会不同,所以在拿到别人的程序代码时,一定要看看ta是用那几个GPIO口来模拟的,不要看ta程序开头的注释
发表于 2021-12-10
【STM32】0.96寸OLED显示屏(7针<font color='red'>SPI</font>协议)软件模拟<font color='red'>SPI</font>
小广播
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2022 EEWORLD.com.cn, Inc. All rights reserved