【乌拉喵.教程】LocalBus总线介绍及FPGA总线编程
视频讲解地址:
B站讲解视频https://www.bilibili.com/video/BV1DL4y1p7Hu/https://www.bilibili.com/video/BV1DL4y1p7Hu/
- 1.SRAM及工作原理介绍
- 2.DSP6713的LocalBus
- 3.FPGA对EMIF的时序译码
- 4.DSP6713的操作外设1
- 5.DSP6713的操作外设2
- 6.FPGA在LocalBus总线上扩片选应用
- 7.实现对FPGA内部逻辑块的控制
- 1.SRAM及工作原理介绍
sram是英文static ram的缩写,它是一种具有静止存取功能的内存,不需要刷新电路即能保存它内部存储的数据。
对于处理器。它通过地址总线发出一个具有22位二进制数字的地址编码--当中11位是行地址,另外11位是列地址,这是通过RAM地址接口进行分离的。行地址解码器(row decoder)将会首先确定行地址,然后列地址解码器(column decoder)将会确定列地址,这样就能确定唯一的存储数据的位置,然后该数据就会通过RAM数据接口将数据传到数据总线。
另外,须要注意的是,RAM内部存储信息的矩阵并非一个正方形的,也就是行和列的数目不是同样的。
引用网址:FPGA第一篇:SRAM工作原理 - yjbjingcha - 博客园
以cypress公司的静态存储器CY7C1041B为例:
内部的逻辑框图:
其中I/O0~15是通常意义上的数据总线DATA0~15。
真值表
写时序:
读时序:
- 2.DSP6713的LocalBus
TMS320C6713 DSP是美国TI推出的C6000系列DSP芯片的一款,它是32位高速浮点型DSP,时钟最高频率为200MHz。
外设资源为:
由于外设资源较少,且McxSP的接口有些时序并不标准,故多采用DSP6713+FPGA的方式扩展外设接口。
通过DSP6713的EMIF访问外部的SRAM的接线框图:
DSP6713通过EMIF发出的写时序:
DSP6713通过EMIF发出读时序:
DSP是怎么通过EMIF总线来读写外部的数据呢?
其实非常简单,对于应用层来说,只需要调用read、write函数,就可以通过EMIF总线发出上面的波形,外设设备比如FPGA,通过译时序,就可以实现让DSP读写自己的寄存器。
- 3.FPGA对EMIF的时序译码
直接看程序,其实就是按DSP的时序来译码的。
那么DSP是怎么来往S_reg1、S_reg2里写数据的呢?又怎么从指定地址中把数据读上来呢?
首先我们要明确一件事情,DSP是如何控制片选的,因为DSP往地址线上输出地址我们好理解,那片选又不是地址线,DSP怎么去控制不同的片选呢?
那么DSP程序如果要往S_reg1、S_reg2里写数据,那么DSP就执行如下命令就行:
write8(0xa000 4000,0x55); //往S_reg1写数据0x55 write8(0xa000 4001, 0xaa); //往S_reg2写数据0xaa |
从FPGA里读取数据,就执行如下命令:
data=read8(0xb00c c000); //从寄存器读数据数据存入data中 |
注:这里write8 read8只是示例,正常write8 read8是读写8位数据的意思,read8是无法读16位数据的,要用read16,这里只是为了和操作SRAM的程序保持一致,便于理解,表示下dsp应用上的读写操作。
- 4.DSP6713的操作外设1
DSP6713有4个片选,CS0~3,其中CS0是主要用于连接SDRAM,CS1用于连外部Flash,只剩下CS2、CS3两个片选了。
那么现在就有个问题,如果DSP6713对外不接FPGA,要接两个外设设备的话,最直接的方法就是一个片选带一个外设,比如接两个串口控制器82C52,那么就片选2接一个82c52,片选3接一个82c52。
82c52的内部逻辑框图:
DSP的接线方法:
那么新的问题来了,如果要再加两个82C52,共4个82C52的话,线要怎么接呢?片选不够了呀,尴尬。
这个时候数电中讲的一款芯片可以帮助我们,就是3-8译码器74HC138。
74HC138译码器可接受3位二进制加权地址输入(A0,A1和A2),并当使能时,提供8个互斥的低有效输出(Y0至Y7)。啥功能,直接看真值表就得了。
说白了,这个芯片就是16进制转10进制的一个转换芯片。
比如,16进制数是0x3,它的10进制值是3,那么就是Y3选中。
那么我们就靠这个芯片可以实现接4个82C52的功能了,怎么接呢?把DSP用不到的地址线接到3-8译码器的二进制输入端上(我们默认控制端E3、E2、E1是使能的)。
DSP的A6-A4接到了74HC138的A2-A0上,那么DSP要选中不同的82C52,那怎么操作呢?
靠地址来区分。
4片82C52分别接到了Y0、Y1、Y3、Y5上,那么对应的74HC138的A2-A0选通分别为000、001、011、101。
则对应DSP的地址为 0 00xx、0 01xx、0 11xx、1 01xx。(这里要注意,DSP的最低位为A2,不是A0,这个原因先不要去管,也就是把管脚A2当作软件上的A0)。
所以我们以选通“2”号82C52为例,看往里写数据软件怎么操作。
很简单,因为我们没有用到片选,所以write(0xa000 000c) 或者write(0xb000 000c)都可以操作到“2”号82C52的第0个寄存器。
write(0xa000 000d) 或者write(0xb000 000d)都可以操作到“2”号82C52的第1个寄存器。
以此类推。
- 5.DSP6713的操作外设2
在上面的基础上,我们上面使用的是4个82C52实现了4串口功能,现在有一个XR16C854可以一个芯片实现4串口功能。
可以发现这个芯片的地址线有3根,是A2-A0,延续4路82C52的图的话我们发现一个问题。
我们看原解法
芯片 |
74HC138 A2-A0 |
82C52 A1-A0 |
占线 |
DSP A6-A4 |
DSP A3-A2 |
线数 |
3 |
2 |
要还用这种接法
芯片 |
74HC138 A2-A0 |
XR16C854 A2-A0 |
结论,A4冲突,不能用 |
占线 |
DSP A6-A4 |
DSP A4-A2 |
|
线数 |
3 |
3 |
即XR16C854得占3个线,也就是得占到DSP的A4、A3、A2了。多了一个A4。
和原来分给74HC138的A4冲突了。
所以要改74HC138的线,往上提一根。
芯片 |
74HC138 A2-A0 |
XR16C854 A2-A0 |
结论:可以实现功能。 |
占线 |
DSP A7-A5 |
DSP A4-A2 |
|
线数 |
3 |
3 |
这就说明一个问题,我们用于分片选的地址线,不能是太低位的线,否则很有可能出现和外设芯片占用地址线冲突的情况。
因此,一般我们用于片选的地址线都从最高选。
即推荐的接线方式
芯片 |
74HC138 A2-A0 |
XR16C854 A2-A0 |
结论:推荐。 |
占线 |
DSP A21-A19 |
DSP A4-A2 |
|
线数 |
3 |
3 |
- 6.FPGA在LocalBus总线上扩片选应用
最终,我们落脚到了FPGA,谨记一句话,只要数字芯片能实现的,FPGA都是能实现的。
所以,上面我们使用74HC138做的通过DSP高位地址扩展片选的功能,我们可以使用FPGA实现。我们最简单的方式就是先计算我们需要扩展几个片选,比如16个片选,那么4位地址线就可以区分出来,那么使用FPGA做一个4-16译码器就行了。接线上也很简单。
下面犯懒了,还是以3-8的来表示吧。
那么FPGA上的程序咋写嘞?
这就实现了对片选的译码。是不是非常简单。
- 7.实现对FPGA内部逻辑块的控制
还是那句话,只要数字芯片能实现的,FPGA都是能实现的。
那么,我们是不是可以把82C52做到FPGA内,当然是可以的。
那么我们的图变成了什么呢?
那么我们就直接在门阵中做一个串口模块就好了,这个模块这里就不讲了,不是今天的主题,咱们就认为现在门阵已经有这么一个模块。
这里展示下模块的一些功能:
可以看出,和82C52的芯片接口其实一样的。有片选、读写、地址、数据。
我们下面就把门阵代码直接放上来看吧,这里以操作“0”号串口模块为例。
把这里的模块调用4次,把s_sys_addr(21 downto 20)分不同的地址,即00、01、10、11,就行了。
【乌拉喵.教程】LocalBus总线介绍及FPGA总线编程相关推荐
- 【乌拉喵.教程】IIC总线介绍及FPGA编程
最近将多年来收集到的教学视频.国内外图书.源码等整理整合拿出来,涉及arm.Linux.python.信号完整性.FPFA.DSP.算法.stm32.单片机.制图.电子模块.kali.出版社图书等.资 ...
- 【乌拉喵.教程】不同负载下继电器的保护电路设计(解决继电器触点粘接的问题)
继电器触点"粘接"总结 袁坤 20170110 视频讲解: https://www.bilibili.com/video/BV1Zb4y1t7Ht/https:// ...
- (3)zynq FPGA AXI4_Stream总线介绍
1.1 zynq FPGA AXI4_Stream总线介绍 1.1.1 本节目录 1)本节目录: 2)本节引言: 3)FPGA简介: 4)zynq FPGA AXI4_Stream总线介绍: 5)结束 ...
- (2)zynq FPGA AXI_Lite总线介绍
1.1 zynq FPGA AXI_Lite总线介绍 1.1.1 本节目录 1)本节目录: 2)本节引言: 3)FPGA简介: 4)zynq FPGA AXI_Lite总线介绍: 5)结束语. 1.1 ...
- 数字ic设计——AMBA总线(1)AMBA总线介绍
AMBA总线介绍 AMBA(Advanced Microcontroller Bus Architecture) 总线是由ARM公司提出的一种开放性的片上总线标准,它独立于处理器和工艺技术,具有高速度 ...
- 【Avalon总线】1.Avalon总线总体介绍
最近在学习Avalon总线相关的知识,所以在学习的过程中写下了这一系列的博文.文章主要是根据ALTERA公司的文档写的.文章中如有错误请指出,谢谢! 1 Avalon总线总体介绍 Avalon总线提供 ...
- 1553B总线介绍及其硬件方案设计
军用1553B总线 1.简介 简单介绍可参考(https://blog.csdn.net/ScilogyHunter/article/details/108444231)博主写的很详细. 1553B总 ...
- 微信开放平台 公众号第三方平台开发 教程一 平台介绍
教程导航: 微信开放平台 公众号第三方平台开发 教程一 平台介绍 微信开放平台 公众号第三方平台开发 教程二 创建公众号第三方平台 微信开放平台 公众号第三方平台开发 教程三 一键登录授权给第三方平台 ...
- AMBA、AHB、APB、AXI总线介绍和对比
一.引出 研究STM32H7的总线系统,对AXI.AHB.APB.ASB有点兴趣,于是去简单了解了一下,总结如下: 说到AXI.AHB.APB.ASB就得先说AMBA(Advanced Microco ...
- 明日之后怎么跳过实名认证_明日之后新手教程能不能跳过 明日之后新手教程玩法介绍...
明日之后新手教程能不能跳过,明日之后游戏萌新注册账号后都会经历一段新手教程玩法才能正式体验游戏,不少小伙伴都最少花费30-50分钟才能完成,许多玩家都很好奇新手教程玩法能不能跳过,下面小编给大家带来明 ...
最新文章
- 蓝光电视再降价 海信42吋液晶不足五千
- 我的Dll(动态链接库)学习笔记
- 首家中国快递公司赴美上市!总市值达141亿美元
- 常见计算机英语,常见计算机英语词汇
- 二十八、Node.js中的RESTful API和接口设计
- 四张照片合成一张怎么弄_精美!多张照片组合成一张的拼贴画,每一幅都令人惊叹...
- 【python】openstack管理小工具(增删查改,批量ping)
- 《也要相信》——沙叶新
- 数据科学的5种基本的面向业务的批判性思维技能
- 什么是千兆光纤收发器?其产品标准具体有哪些?
- python读取word图片_Python中如何读取Word中的图片
- Firewoks——层与蒙版
- 中国信通院:二季度83款5G手机申请入网 款型数占比已过半
- 开发中常用的加密算法大全初步总结
- 【测试用例级别定义】
- Spring-context-AnnotationConfigUtils类
- 我不是领导,如何让别人听我的话?
- QT应用SQL数据库,简单全面的应用,增删改查。
- 完整缓和曲线和非完整缓和曲线交点法坐标计算应用
- Excel如何按照颜色排序
热门文章
- linux系统下/etc目录的理解
- STM32学习笔记(二)
- 周末分享 | 2019年最好的演讲:别让任何人打乱你的人生节奏
- MySQL 基础学习笔记
- 【GLPNet2021】GLOBAL-LOCAL PROPAGATION NETWORK FOR RGB-D SEMANTIC SEGMENTATION
- 【代码重构(Refectoring)系列教程】基本型别偏执(Primitive Obsession)
- uniapp上传图片视频插架分享
- 技嘉 AORUS Radeon RX 6700 XT ELITE 12G 显示卡潮流登场
- jsp值choose标签
- java web 手机验证_java web实现手机短信验证码登录实例