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

  • 22
  • 0
  • 约2.97千字
  • 约 12页
  • 2016-08-05 发布于重庆
  • 举报

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

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

实验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)

1亿VIP精品文档

相关文档