转》【iCore4 双核心板_FPGA】例程十:FSMC总线通信实验——复用地址模式

int main(void)
{
int i;
unsigned int fpga_read_data;

system_clock.initialize();
fsmc.initialize();
led.initialize();

LED_GREEN_ON;

while(1){        
    for(i = 0;i < 256; i++){
        fpga_write(i,i);                                 
    }
    for(i = 0;i < 100000; i++);
    for(i = 0;i < 256;i++){
        fpga_read_data = fpga_read(i);           
        if(fpga_read_data != i){
            LED_GREEN_OFF;
            LED_RED_ON;
        }
    }    
}

}
复制代码
复制代码
module fsmc_ctrl(
input clk_25m,
input pll_100m,
input rst_n,

input FSMC_CLK,
input NADV,
input WRn,
input RDn,
input CSn,
input [23:16]AB,
inout [15:0]DB

);

//--------------------wire---------------------------------//
wire rd = (CSn | RDn);
wire wr = (CSn | WRn);

//--------------------ab-----------------------------------//
reg [23:0]address;

always @ (posedge NADV or negedge rst_n)
    begin
        if(!rst_n)
            begin
                address <= 24'd0;
            end
        else 
            begin
                address <= {AB,DB};
            end
        
    end

//--------------------clk----------------------------------//
reg wr_clk1,wr_clk2;

always @(posedge pll_100m or negedge rst_n)
    begin
        if(!rst_n)
            begin
                wr_clk1 <= 1'd1;
                wr_clk2 <= 1'd1;
            end
        else
            {wr_clk2,wr_clk1} <= {wr_clk1,wr};    //提取写时钟
    end
    
wire clk = (!wr_clk2 | !rd);

//--------------------db_out-------------------------------//
wire [15:0]db_out;
assign DB = !rd ? db_out : 16’hzzzz;

//--------------------my_ram-------------------------------//
my_ram u1(
.address(address),
.clock(clk),
.data(DB),
.wren(!wr),
.rden(!rd),
.q(db_out)
);//例化ram模块

//--------------------endmodule----------------------------//
endmodule

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值