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

发布时间2021-01-19

手机分享

前言


这篇文章延续上个篇《FPGA杂记基础框架篇》,延续为玩家分享图片IP例化和两个因为FPGA单片机芯片推动的Demo建筑项目。


IP例化


IP乃是某个封装上的版块,融合在相同的定制开发环保底下,以XK星空体育 的TD小APP试对,有所各种不同品类的存储芯片融合了有所各种不同的IP版块,都可以利用小APP例化获取。


以内是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的读IPip地址,写IPip地址、使能警报和放入导出数据信息,仔细码软文笔记都中已不再赘述,还可以之间选取码。


可综合评估版块电源书写达成后,书写模拟模拟仿真技术版块电源并便用模拟模拟仿真技术应用实行模拟模拟仿真技术。


仍然该项建筑工程用到了XK星空体育 的IP库,故此也需要在modelsim中使用特定的XK星空体育 模型模拟库,使用方式如下图所示:


最先在modelsim的布置相关文件资料名上面修改modelsim的默认值化相关文件资料modelsim.ini,右键技能后,将它的只读技能解除,那么用文档相关文件资料(本市政工程用到的是notepad++)修改。



在modelsim.ini的[library]列表框下移除XK星空体育 的模拟模型制作库压缩压缩档案名称目录索引子目录索引,XK星空体育 全部的模拟模型制作库压缩压缩档案名称目录索引全都在XK星空体育 的编译图片软件TD配置子目录索引下的sim压缩压缩档案名称目录索引夹中,在此将其全部的库压缩压缩档案名称目录索引都重复粘贴进了modelsim的压缩压缩档案名称目录索引夹里,若不重复粘贴,也可随时显示XK星空体育 压缩压缩档案名称目录索引夹的线路。



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



采用后进入到如下所示页面设置:



会选择逼真的楼房顶层因此倒闭整合页面。


相同的个对话框张开librarieshtml页面并在search libraries栏右边确定add,下拉目录确定代表的ef3的库文件目录。



安装实现后点击事件OK进去仿真软件既能。


每次实验性中遇到你大问题和按装一下:


01



刚现在开始pll都没有读取数据信号,因为使用 了pll观察正弦波形图显示pll正弦波形图有以下几点:



察觉到是置位了reset信息出现的,产看源代码察觉到下列:



初始化键讯号直到接连过了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工程环境创建


新建资料夹名录如表:


图1


但其中板级兼容包间接由原装提供数据。


先搭建keil公程,另存keil,搭建公程,手机截图在分别的MCU→project文件目录下。



器材选取ARM cortex M3器材。



建筑项目建设建好后,填加重要性的BSP包中的档案给出,使用好后的建筑项目建设目录索引如左栏:



其中,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


任何设立有以下几点图:



使用分散型加载失败压缩zip文件elf2_example.sct(elf2_example.sct压缩zip文件准确代碼可参看公程)



环境快速设置完成后能否刚刚开始开发建设项目代码是什么。


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

订阅

的地方

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