【技术分享】FPGA杂记之基础篇二及Demo案例

发布时间2021-01-19

介绍

前言


本论文续接下一篇《FPGA杂记基础理论篇》,继读为人们分享图片IP例化和四个为FPGA集成电路芯片保证 的Demo建设工程。


IP例化


IP就是一家封装完的信息接口,结合在相对应的的定制开发自然环境底下,以XK星空体育 的TD工具试对,有差异 品类的集成ic结合了有差异 的IP信息接口,应该确认工具例化赋值。


以下的是XK星空体育 TD4.6.5智能家居控制的EF3L40CG332B的相关联IP。



1.1 PLL&RAM


以例化PLL和RAM举例,满足两根异步双口 RAM。


读写挂钟都设备 100Mhz, 几个 RAM 为 RAMA 和RAMB, 长度为 1024,位宽为 8bit,写进数据源源统计为 8bit,100Mhz 保持数据源源统计流, 当 RAMA被写进 1024 字节数据源源统计后开启到写 RAMB, RAMB 被写进 1024 字假后开启 RAMA。由此循坏类推。


当 RAMA 被写入, 1024 字节时, 给读时序具备的无法警报识别 RAMA 的信息, 识别完 RAMA 的 1024 字节信息时, 开启读 RAMB 用类推。


这样公程的公程形式一下图:



首选EF3L40CG332B_DEV定制开发板提供了了25Mhz的晶振钟表进入到EF3L40CG332B的钟表管脚。



我想要能够 100Mhz的读写频率,必须要 先用PLL能够 倍频秒表。



在tools列表下打开IP Generator进行IP core界面,并考虑PLL,填写闹钟加上板子晶振25Mhz。



输入挂钟填进所要要的100Mhz,并从C0输入。



安装完全后,生成二维码的module宣称以下几点(完善板块可符合编码)



再生能力成ram的IP传感器


在IP core任选择RAM



Memory type选择简单双口ram,memory size设置位宽8bit深度1024


使用达到后,转为的module声明公告相应(完好板块可参阅代碼)



第二编排上层文件资料但会在上层例化PLL和RAMA、RAMB。


顶面相关文件中注意是对ram的键入口开展时序进行,有ramA、ramB的读ip详尽地址,写ip详尽地址、使能电磁波和键入伤害数据资料,详尽源码摘记中从不赘述,能会借鉴源码。


可结合摸块制定实现后,制定模型建模模拟摸块并食用模型建模模拟电脑软件参与模型建模模拟。


是因为某次建设项目安全使用进了XK星空体育 的IP库,那么也要在modelsim中加相关的XK星空体育 仿真技术库,加技术以下:


最先在modelsim的按装名录接下复制modelsim的初始值化文档modelsim.ini,右键人物魔抗后,将它的只读人物魔抗撤消,接下来用txt文档文档(本项目操作的是notepad++)复制。



在modelsim.ini的[library]程序名称名称列表下增多XK星空体育 的建模库程序名称名称目录格式索引,XK星空体育 其他的建模库程序名称名称就有XK星空体育 的编译电脑软件TD施工目录格式索引下的sim程序名称名称夹中,前方将其其他的库程序名称名称都拷贝进了modelsim的程序名称名称夹里,若不拷贝,也可就直接輸入XK星空体育 程序名称名称夹的路径分析。



保存后退出,打开modelsim并创建工程,编译通过后,进入仿真步骤,在simulate状态栏下选择start simulate,如下图:



选后进入到如下所述网页页面:



选定模型制作的上层从而关闭系统优化方案页面。


一些个界面拆开libraries网站并在search libraries栏左下选购add,下拉目录选购相应的ef3的库文件格式。



设置成完整后弹框OK打开逼真就行。


此前实践中碰见问題和调试程序相应:


01



刚刚刚开始pll不模拟输出数据,因浏览器打开了pll察看波型图得知pll波型图下列:



出现 是置位了reset4g信号促使的,查到编号出现 下面:



归位警报一致衔接已到pll的置位警报,犹豫归位警报是低电平有效的性而置位警报是高电平有效的性,从而造成的了pll一致居于归位的情况发生。变化后,一致将pll归位警报置0,源代码和模拟仿真结果显示通常,方式如图:



02


PLL问题解决后,观测数据整体读写情况。



分式的运算气象观测需要表明,rama读使能信号灯只转化成好几个次,而ramb的读使能一直以来都没法跳变,回到二维码看表明:



原理评断时未将rama的写使能卫星信号置1的先决条件写下来。


ramb的写使能理解:



修改游戏后,代码怎么用有以下:



弧形防真给出:



粗看基本上契合rama、ramb跳变读写的性能,测量rama、ramb时序跳变地方。



在rama和ramb写使能讯号转为时,挖掘空了一大拍,再怎么查看代码是什么,挖掘rama、ramb写使能在必备条件决定时,利用的决定逻缉是不会似的的,会造成ramb_wren的置位会在rama_wren置位后的下拍上展开。



以至于改动ramb_wren的分析经济前提,使之与rama_wren的一般,都以写新地址为经济前提分析再逼真。



不错的测到,时序没问题。



quick start & GPIO Demo


这次demo体现基本功能如下所示:FPGA操控LED D1灯闪,MCU操控LED D2常亮。


2.1 keil工程环境创建


創建zip手机文件夹总目录正确:


图1


当中板级支撑包会由原装厂具备。


先建立keil建筑项目施工,打開keil,建立建筑项目施工,导出在分别的MCU→project文件目录下。



功率元器件封装挑选ARM cortex M3功率元器件封装。



项目建好后,更改必须的BSP包中的zip文件一下,创建活动好后的项目分类目录如左栏:



其中,startup组下的文件分别来自MCU\ELF2_BSP\Device\ELF2\Source和MCU\ELF2_BSP\Device\ELF2\Source\ARM目录下;lib组的文件来自MCU\ELF2_BSP\Driver;log组文件保存在MCU\ELF2_BSP\Debug和MCU\ELF2_BSP\Debug\RTT目录下。


刚刚建立main.c信息夹并保管在图1下图的总信息夹的目录预览的MCUàsrc信息夹夹下并生成main.c到项目main组中。



上面设立有一些水利工程的环境,浏览器打开options for target交流框。



切换到user栏,设置如下参数,这些参数会影响输出keil工程的*.asm 和*.bin 文件,我们需要通过添加这两条指令得到bin文件并最终提供给FPGA。



“添加的语句分开 给出:


fromelf -c -v -a --output=@P.asm Objects\%Lfromelf --bin --output=@P.bin Objects\%L


再更改到C/C++栏,设定头文件名路劲下列:



也会会直接添加图片下列索引


..\ELF2_BSP;..\ELF2_BSP\CMSIS\Core\Include;..\ELF2_BSP\Debug;..\ELF2_BSP\Debug\RTT;..\ELF2_BSP\Driver;..\ELF2_BSP\Driver\regmap;..\ELF2_BSP\Device\ELF2\Include;..\ELF2_BSP\Device\ELF2\Source\ARM


其它的设备下列图:



“添加解聚初始化文件夹名elf2_example.sct(elf2_example.sct文件夹名实际上编码可学习过程)



生态设立重新后都可以开端编辑水利代码怎么用。


2.2 C代码编辑


在main函数值中开发对GPIO的控制。



先对GPIO原始化设计体赋值,再启用GPIO原始化涵数公式,HAL_GPIO_WritePin涵数公式对对应的GPIO进行轻重赋值。


这一次实用C代碼对GPIO1_0的作业是置低,GPIO1_0关键意思是会在下一截(1.3)完成说明怎么写。


2.3 TD工程创建和代码编辑


点击TD4.6.5或另外的板本开启新的公程。



包存在总根导航的FPGA→project根导航下,并抉择代表的电子元器件类型、。



更改还是编缉源文档文件,另行通知过程控制器宣称下述:



另外hw_led是由FPGA思维逻辑的把控的led,sw_led是由MCU编码是什么的把控的led(即1.2中的gpio1_0)。hw_led的的把控编码是什么以下,sw_led的的把控编码是什么具体情况见1.2:



但是例化MCU和PLL,PLL例化其主要受到输出到MCU的系统的闹钟,例化具体步骤略,此处贴上在楼房顶层中取用的结局:



传输的200M的数字数字时钟收到MCU的系统化数字数字时钟。


例化MCU用户界面详细:



右图下图,MCU兼容极大 32 个GPIO,但其中低16位,即GPIO_L0~GPIO_L15是直接性链接至pad的;而GPIOH0~GPIOH15则是在FPGA链接至外部链接,所以说,当便用这16个GPIO的时刻,必须要在FPGA过程中的教导自律档案大拇指定中应链接至那些脚。


在例化MCU时,用到到那家脚就应该打开网页微信分属的旋转开关,列举本例中,打开网页微信了L0、L1和H0,PPM_CLK,中间PPM_CLK是FPGA Fabric 投入钟表,进行连结至FPGA的PLL工作输出clk200;L0、L1进行连结至PAD,观看机理图。



GPIO0和GPIO1连入方式的是按装口;另外H0连入方式至FPGA 中sw_led并顺利通过管脚来约束连入方式至LED D2。


过程的家长教育约束性档案方式:



查的开发板道理图,D2连接方式至FPGA的16脚,且从道理图大察,keil项目工程中对该GPIO的实际操作是置低,关键凸显是D2常亮。



设置完毕后,完成结果声明如下:



并在高层中赋值:



2.4 下载


Keil和TD的工作都构建制作完毕后,编译工作。表中,keil自动生成的工作bin文件下载软件需与TD连接并完成TD下载软件至集成电路芯片或开发技术板中。


关联性的步奏相应:


在HDL2Bit Flow栏右键选定 properties。



在generate bitstream的六项instruct ram选中择keil工作自动生成的bin压缩文件的文件目录(同时keil工作己经编译按照),并存储。



保留后,双击generate bitstream编译TD建设项目,若是在选取根目录前早已经编译过TD建设项目了,想要右键选取rerun已经编译(特别留意:若是重设了keil的C文件格式夹名而TD的HDL文件格式夹名并没有变现,建意也rerun后再将文件格式夹名保存至发展板)



下载安装:



板子症状右图:


D1不断地闪动,D2常亮:



FPGA串口通信设备


本Demo经典案例对于XK星空体育 的EF2M45LG48_MINI_DEV2规划设计板,确认自测板的uart口和PC机的uart口连到来型成一款 反馈控制回路开关,即PC机读取数据库源至FPGA自测板,FPGA读取并回退相同之处的数据库源。实验所结果显示确认PC机的串口校准软件助手校准看到。


3.1 UART协议


UART 有的是种常用串行参数统计报告参数统计总线,广泛用于异步沟通网,将参数统计报告在串行沟通网和并行执行沟通网间的视频传输参数改换。本质的讲那就是把多比特的参数统计报告有效的转化成为单比特的参数统计报告(tx端),还把单比特的参数统计报告有效的转化成为多比特的参数统计报告(rx端)。办公目的是将参数统计报告的每家 bit 三位接三位地视频传输参数。


rx,读取端,位宽为 1 比特, pc 机在串口往 FPGA 发 8 比特大数据文件时,FPGA 在串口线 rx 五位五位地读取,从平均位到高位先后顺序读取,到最后在 FPGA 外面位拼在一起成8 比特大数据文件。


tx,上传端,位宽为 1 比特, FPGA 进行串口往 pc 机发 8 比特信息分析时, FPGA 把 8 比特信息分析进行 tx 线俩位俩位的传至 pc 机,从比较低位到最低位分别上传,在最后串口通信进行串口肋手把这俩位俩位的信息分析位无缝拼接成 8 比特信息分析。


注意点:


1、串行数据资料的推送和读取都都是从新高到新高。


2、都不传送可能不发送数值源的时候下, rx 和 tx 仍处于空闲程序,于此 rx 和 tx 线都控制【高电平】,若果有想法据源传递,第一步会出的初始位0,后来是 8 比特的数值源位,完后有 1 比特的已停工作位(高电平),若果已停工作位之后已经不再发数值源,将进人空闲程序,不能又将数值源线会降低(进人初始位程序)。


3、波特率算:uart接入大数据有不同于于的波特率,用到HDL语言学说明时,基本上用到记数器器来实行不同于于波特率的大数据性传播。记数器器的记数器值与具有波特率相关的英文,以熟悉的115200试对,有效市场理论体统闹钟是25Mhz,则接入大数据1bit所要要的闹钟过渡期为25 * 1000 *1000 /115200 = 216个,所以记数器器记数器值即216(从0慢慢记数器)。


3.2 模块总框架


组件的基本框架图下面:



top层也可以数字时钟和恢复电磁波的读取,以及读取电磁波rx和导出电磁波tx,区别源于PC机和导出到PC机,形成了开环。子模快中,Rx电磁波再最为uart_rx模快的读取,经历过uart_rx模快的操作,变改为八位并行性性动态统计资料o_data导出;关于uart_tx模快,核心将读取的i_data并行性性电磁波变改为串行动态统计资料再导出到PC机。


3.3 代码实现


1. Rx端



2.Tx端



3.4 顶层



3.5 仿真



本次仿真使用到了task语句,task语句通常在当仿真时需要给输入变量特定的输入值时使用,例如本次仿真对rx端进行赋值。


3.6 仿真结果及问题排查


Rx端:


全局波形参数如下图所示:



查验关键有以下:



当rx=1时,输入输出的o_data串行信息在o_flag = 1(即显示高速传输完成)时也为1,结局正常情况。


Tx端:


整体化波形参数如下图所示:



上图很看不出能能查出tx端传送统计信息有的故障 ,当tx送始点位(即变低)后,是没有将统计信息接入。气象观测相关电磁波弧形,根本合适。可以看出的故障 大概率分析出来在tx赋值大部分,开一就开始总以为是送统计信息位的必要條件理解有的故障 ,排查编号,统计信息传送统计信息时的理解必要條件有以下:



手机查看波形参数看见该具体条件能够 被足够。



以后了解起讫位的读取能力时察觉了差错:



起始位发送要与tx_en同步。假设条件使用tx_en判断,则会比tx_en慢一拍。


其他,不允许用到tx_en == 1'b1用作转发起至位的答案状态,可能tx_en 在资料转发时始终为1,这类tx端会恒为0,调整后世码以下的:



再分析波型正常情况。



3.7 上板最终效果


源代码资源下载进開發板后,在串口调校辅助软件中就可以常见收发的时候统计数据,方式:



点击反馈您的需求,助力我们打造更优质的FPGA产品!

订阅信息
a1_icon02.svg
download.jpg

订阅

沿海地区

我已仔细阅读并同意隐私声明