• 方案介绍
  • 附件下载
  • 相关推荐
申请入驻 产业图谱

基于FPGA的EMIF总线时序设计Verilog代码ISE仿真

08/01 14:21
1424
加入交流群
扫码加入
获取工程师必备礼包
参与热点资讯讨论

2-2406041G532S4.doc

共1个文件

名称:基于FPGA的EMIF总线时序设计Verilog代码ISE仿真

软件:ISE

语言:Verilog

代码功能:

读数据时,在 Lead period阶段,对应存储映射区片选信号nCSO1=0(低电平),地址信号A[14.0]有效,在Active period,读信号nRD=0读取数据总线D[15.0]上数据,在Trail period阶段,读信号nRD=1,地址信号A[14.0]保持有效,片选信号nCS01保持为低电平。其中SYSCLKOUT=120MHz。

QQ图片20240527204456.png

写数据时,在 Lead period阶段,对应存储映射区片选信号nCSO1=0(低电平),地址信号A[14.0]有效;在 Active period,写信号nWE=0,数据总线D[15.0]上待写数据有效;在 Trail Period阶段,写信号nWE=1,片选信号nCSO1保持为低电平,地址信号A[14.0]保持有效,D[15.0数据写入寄存器。其中SYSCLKOUT=120MHz。

QQ图片20240527204820.png

公共输入信号:

CLK10M:频率为10M的时钟信号

nRST:异步复位信号,低电平有效。

nCS01:片选信号,低电平有效。

nWE:写信号,高电平有效。

nRD:读信号,低电平有效。

A[14.0]:地址信号

输出信号:

D[15.0]:数据总线输出

EMIF总线时序设计.jpg

FPGA代码Verilog/VHDL代码资源下载:www.hdlcode.com

演示视频:

设计文档:

1. 工程文件

2. 程序文件

3. 程序编译

4. RTL图

5. Testbench

6. 仿真图

读过程,读的值存储在read_data

写过程

部分代码展示:

module EMIF(
input clk_120M,//120MHz
input nRST,//异步复位,低电平有效
input nCS01,//片选信号,低电平有效
input nWE,//写信号,低电平有效
input nRD,//读信号,低电平有效
input [14:0] A,//地址
inout [15:0] D//数据
);
wire XTIMCLK;
reg XCLKOUT=1;
assign XTIMCLK=clk_120M;//输出120MHz
always@(posedge clk_120M or negedge nRST)
if(~nRST)
XCLKOUT<=1;
else
XCLKOUT<=~XCLKOUT;//2分频
//读过程
//假设要读地址为15'b000000000000001,地址可以自行修改
reg [15:0] read_data=16'd0;
reg [3:0] RD_cnt=4'd0;
always@(posedge clk_120M or negedge nRST)
if(~nRST)
RD_cnt<=4'd0;
else
if(nCS01==0 && nRD==0)//CS低电平有效,读有效
RD_cnt<=RD_cnt+1;
else
RD_cnt<=4'd0;
always@(posedge clk_120M or negedge nRST)
if(~nRST)
read_data<=16'd0;
else//设读地址为15'b000000000000001,地址可以自行修改
if(RD_cnt==4'd3 && A==15'b000000000000001)//RD_cnt计数值为3时,去读D数据
read_data<=D;
else
read_data<=read_data;//否则保持
//写过程
reg [15:0] write_data;//写数据
//设要写地址为15'b000000000000010,地址可以自行修改,写数据为16'h01;
always@(*)
if(~nRST)
write_data=16'd0;
else
if(nCS01==0 && nWE==0)//CS低电平有效,写有效
if(A==15'b000000000000010)//

点击链接获取代码文件:http://www.hdlcode.com/index.php?m=home&c=View&a=index&aid=835

  • 2-2406041G532S4.doc
    下载

相关推荐