实验4 利用状态机产生存储器读写时序课件.pptVIP

实验4 利用状态机产生存储器读写时序课件.ppt

  1. 1、本文档共12页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
实验4 利用状态机产生存储器读写时序 实验要求 IDT7202芯片(FIFO)用于缓存数据 采用递进型状态机生成IDT7202的读、写控制时序,实现数据缓存。 时序要求: 设有外部信号mode,控制读写模式设置,高为写模式,低为读模式。 写:如果FIFO非满,则输出一个最小50ns的写脉冲。 读:如果FIFO非空,则输出一个最小30ns的读脉冲,读到的数据从readq总线输出。 要求采用40MHz晶振,使用异步复位方式设置初始状态。 设计思路 理解题意(在mode控制下,产生两个分支,第一个分支产生写脉冲,第二个分支产生读脉冲) 封装(本例只考虑用到的引脚) 实体(根据引脚直接代入) 框架(实体+结构体) 逻辑 实现 仿真 设计思路 定义一个状态机,复位期间置初始状态; 在初始状态里,判断mode,分支到两个不同的状态,分别代表读过程和写过程的初始状态; 40MHz的晶振频率,可以产生40MHz的时钟。每个时钟周期(即状态切换周期)25ns。 最小50ns宽的写脉冲,要用两个状态切换周期; 最小30ns宽的写脉冲,只能用两个状态切换周期,用50ns来替换。 关键信号(从FIFO角度) 封装(从FPGA的角度看) Mode、CLK40M、RST全局输入控制信号; D、W、FF写出时序组合(FF为输入,D、W为输出); Q、R、EF读入时序组合(R为输出,Q、EF为输入)。 READQ用来把读到的Q总线数据输出到别的地方。 代码 library IEEE; use IEEE.std_logic_1164.all; use IEEE.std_logic_arith.all; use IEEE.std_logic_unsigned.all; entity fifowr is port ( rst, CLK40M, mode : in std_logic; ff, ef : in std_logic; w, r : out std_logic; q: in std_logic_vector(8 downto 0); readq: out std_logic_vector(8 downto 0); d :out std_logic_vector(8 downto 0) ); end fifowr ; 代码 Architecture wr_arch of fifowr is TYPE state is (st0,rd0,rd1,rd2,wr0,wr1,wr2); signal st : state; signal wdata:std_logic_vector(8 downto 0); Begin PROCESS (CLK40M) BEGIN IF(rst=0) THEN st = st0; wdata = 000000000; d = 000000000; W = 1; R = 1; ELSIF (CLK40MEVENT AND CLK40M =1) THEN 代码 CASE st IS WHEN st0 = IF mode=1 and ff=1 THEN st = wr0; ELSIF mode=0 and ef=1 THEN st = rd0; ELSE st = st0; END IF; WHEN wr0 = wdata = wdata + 1; d = wdata; W =

文档评论(0)

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

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

1亿VIP精品文档

相关文档