LabVIEW和PLC通信.docVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
练习十二 利用SRAM设计一个FIFO 在本练习中,要求同学利用练习十一中提供的SRAM模型,设计SRAM读写控制逻辑,使SRAM的行为对用户表现为一个FIFO(先进先出存储器)。 1)设计要求: 本练习要求同学设计的FIFO为同步FIFO,即对FIFO的读/写使用同一个时钟。该FIFO应当提供用户读使能(fiford)和写使能(fifowr)输入控制信号,并输出指示FIFO状态的非空(nempty)和非满(nfull)信号,FIFO的输入、输出数据使用各自的数据总线:in_data和out_data。下图为FIFO接口示意图。 2)FIFO接口的设计思路 FIFO的数据读写操作与SRAM的数据读写操作基本上相同,只是FIFO没有地址。所以用SRAM实现FIFO的关键点是如何产生正确的SRAM地址。 我们可以借用软件中的方法,将FIFO抽象为环形数组,并用两个指针:读指针(fifo_rp)和写指针(fifo_wp)控制对该环形数组的读写。其中,读指针fifo_rp指向下一次读操作所要读取的单元,并且每完成一次读操作,fifo_rp加一;写指针fifo_wp则指向下一次写操作时存放数据的单元,并且每完成一次写操作,fifo_wp加一。由fifo_rp和fifo_wp的定义易知,当FIFO被读空或写满后,fifo_rp和fifo_wp将指向同一单元,但在读空和写满之前FIFO的状态是不同的,所以如果能区分这两种状态,再通过比较fifo_rp和fifo_wp就可以得到nempty和nfull信号了。下图为FIFO工作状态的示意。 在得到nfull和nempty信号后,就需要考虑如何应用这两个信号来控制对FIFO的读写,使得FIFO在被写满后不能再写入,从而防止覆盖原有数据,并且在被读空后也不能再进行读操作,防止读取无效数据。 此外,在进SRAM读写操作时,应该注意建立地址、数据和控制信号的先后顺序。一般情况下,希望对SRAM读写的波形时序如下图所示: 即写SRAM时,先建立地址和数据,然后置写使能信号WR有效,在WR保持有效一定时间后,先复位WR,然后释放地址和数据总线。而读取SRAM时,则先建立地址,然后置读使能RD有效,在RD维持有效一定时间后,复位RD,同时读取数据总线上的值,然后再释放地址总线。在进行FIFO操作时,用户一般希望除了没有地址外,其它三个信号的时序关系能保持不变。请同学们在设计FIFO控制信号与SRAM控制信号间逻辑关系时注意这一点。 3)FIFO接口的测试 在完成一个设计后,需要进行测试以确认设计的正确性和完整性。而要进行测试,就需要编写测试激励和结果检查程序,即测试平台(testbench)。在某些情况下,如果设计的接口能够预先确定,测试平台的编写也可以在设计完成之前就进行,这样做的好处是在设计测试平台的同时也在更进一步深入了解设计要求,有助于理清设计思路,及时发现设计方案的错误。 编写测试激励时,除了注意对实际可能存在的各种情况的覆盖外,还要有意针对非正常情况下的操作进行测试。在本练习中,就应当进行在FIFO读空后继续读取、FIFO写满后继续写入、FIFO复位后马上读取等操作的测试。 测试激励中通常会有一些复杂操作需要反复进行,如本练习中对FIFO的读写操作。这时可以将这些复杂操作纳入到几个task中,即减小了激励编写的工作量,也使得程序的可读性更好。 下面的测试程序给同学们做为参考,希望同学们能先用这段程序测试所设计的FIFO接口,然后编写自己更全面的测试程序。 `define FIFO_SIZE 8 `include “sram.v” // 有的仿真工具不需要加这句, 只要sram.v模块编译过就可以了 `timescale 1ns/1ns module t; reg [7:0] in_data; //FIFO数据总线 reg fiford,fifowr; //FIFO控制信号 wire[7:0] out_data; wire nfull, nempty; //FIFO状态信号 reg clk,rst; wire[7:0] sram_data; //SRAM数据总线 wire[10:0] address; //SRAM的地址总线 wire rd,wr; //SRAM读写控制信号 reg [7:0] data_buf[`FIFO_SIZE:0]; //数据缓存,用于结果检查 int

文档评论(0)

ww90055 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档