集成电路技术分享

 找回密码
 我要注册

QQ登录

只需一步,快速开始

搜索
楼主: lcytms

跟李凡老师学FPGA本地接口设计:LIP基础(20170502课堂笔记)

[复制链接]
 楼主| lcytms 发表于 2018-10-10 09:29:55 | 显示全部楼层
1402
        上面写了英文source may assert valid。
        就是在这一段,上游可以把它设置为有效。
        而红色的部分是,上游不能设置为有效。
        这部分为什么呢?
        这部分因为ready为低电平。
        我们现在还没有看到退出呢。
        我们只看到左边了。
        红色的部分上游是无权叫停的。
        上游有权叫停的,只在下游ready以后。所以说Altera做的这种模式,是下游主动的模式。
        也有一些握手做下游的被动,或者是做其它的一些模式,但是这个ST是下游主动。
        下游起主导作用。虽然下游是反制的,但是下游起主导作用。
        下游ready为低电平的时候,上游就得停。
        当下游ready为高电平的时候,上游才有权决定走和停。
        进入是4拍。
 楼主| lcytms 发表于 2018-10-11 10:27:19 | 显示全部楼层
1403
        下游ready置为低电平,用4拍。
        4拍以后,并不意味着上游就立即停数据。
        因为管道里面仍然有4拍的数据。
        这四拍的数据,就从输入无效到输出无效,仍然有四拍,仍然可以走数据。
        这四拍里面,在这张时序图上,第三个数据加载了。
        3以后,上游仍然可以选择叫停,仍然可以在这个期间叫停2拍。
        最后一拍,上游选择走,走了一个数据。
        走了数据以后,再出来就过了ready了,过了就绪潜伏期了。
        过了下游发出的就绪潜伏期,就应该是进入就绪潜伏期的exit了,退出了。
        上游就只能停了。
        所以说这个灰色的部分,是上游可以叫停的区域,红色的部分是上游不能叫停的区域。
 楼主| lcytms 发表于 2018-10-11 10:37:18 | 显示全部楼层
1404
        而这个反制的过程,下游是主动的,下游想走就走,想停就停。
        任何时候,上游要听从下游的。
        只有下游ready了,上游才可以叫停。
        这是就绪潜伏期的4拍。
        另外呢,这张图上说的是就绪潜伏期的0拍。
        这是就绪潜伏期的1拍。
        2拍。
        其它的说的并不多,文件上就这几个。
        实际上流的信息量很大。
  

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?我要注册

x
 楼主| lcytms 发表于 2018-10-12 11:43:28 | 显示全部楼层
1405
        下面我来说一下,我们今天下午的练习。
        这个练习就不用做了,因为DDR2、DDR3我们将马上来讨论。
  

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?我要注册

x
 楼主| lcytms 发表于 2018-10-12 11:45:53 | 显示全部楼层
1406
        我们做最后一个,做一个双端口的FIFO,双端口就是双时钟嘛。
        一个写时钟,一个读时钟。
        读时钟呢,我们称之为int_clk,内部的时钟,int_clk是200M。
        这个FIFO,输入端口每一拍都有数据进入。
        然后我们写一个控制器。
        这个控制器呢,要求FIFO每写满256个字的时候,200M,用50M的时钟写。
        然后呢,用200M的时钟,监测其中的标志,要满了或者几乎满的时候,一次性地把它读出来,256。
        这个FIFO建议你做512,这样的话,你不会丢失。
        到256的时候,你用它的用量,这上面没有。
        就出来一个flag线。
        你也可以用那个almost,回头我来说一下。
        就是说快满的时候,到256的时候,让它为真。
        这样的话呢,控制器每256的时候,读一次FIFO。
        读多少呢,读256个字。
 楼主| lcytms 发表于 2018-10-14 09:42:41 | 显示全部楼层
1407
        然后呢,写到RAM里面去,RAM的深度就是256,我们用静态存储器来写。
        这样的话呢,在50M的过程之中,每一拍都在写。
        然后呢,内部的100M,只满了256,控制器会一次性地将FIFO读出来,然后再写到RAM里面去。
        如果这一切做的是正确的话,那么我们相信RAM里面的数据应该是稳定的,对不对?
        因为它每一次写256都应该是相同的值。
        我们在testbench激励的时候,我们在in_data端,每一拍都有一个值,或者从0到255。
        然后呢,我们再看RAM,在目标接口上,RAM的256个单元应该是每一拍的数据都是稳定的。
        如果是固定的,说明我们做成了。
        这是一个练习。
        还有一个呢,我要找一下。
 楼主| lcytms 发表于 2018-10-14 09:45:36 | 显示全部楼层
1408
        我这个电脑上有一段用Avalon写的一个存储器的接口,然后呢,我们用它把这个突发读、突发写的控制过程做完。
        回到时序图上。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?我要注册

x
 楼主| lcytms 发表于 2018-10-14 09:53:33 | 显示全部楼层
1409
        我先画到白板上。
        这段代码,我稍后来找到,笔记本上应该有这段代码。
        我们自己写了一个Avalon MEM的模型。
        然后呢,我们把这张图,就是突发写的这张时序图,当然你也可以稍微做一点变化。
        但是我们下午的要求就是,如果把这张图写了四个数,data1、data2、data3、data4,按照这张时序图写进去。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?我要注册

x
Sunlife 发表于 2018-10-14 13:23:21 | 显示全部楼层
                  
 楼主| lcytms 发表于 2018-10-15 09:18:21 | 显示全部楼层
1410
        突发写,地址,writedata,beginbursttransfer。
您需要登录后才可以回帖 登录 | 我要注册

本版积分规则

关闭

站长推荐上一条 /1 下一条

QQ|小黑屋|手机版|Archiver|fpga论坛|fpga设计论坛 ( 京ICP备20003123号-1 )

GMT+8, 2024-12-24 02:58 , Processed in 0.064517 second(s), 17 queries .

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表