【iCore4 双核心板_FPGA】例程十一:FSMC总线通信实验——独立地址模式
生活随笔
收集整理的這篇文章主要介紹了
【iCore4 双核心板_FPGA】例程十一:FSMC总线通信实验——独立地址模式
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
實驗原理:
STM32F767上自帶FMC控制器,本實驗將通過FMC總線的地址獨立模式實現(xiàn)STM32與FPGA
之間通信,FPGA內(nèi)部建立RAM塊,FPGA橋接STM32和RAM塊,本實驗通過FSMC總線從STM32向
RAM塊中寫入數(shù)據(jù),然后讀取RAM出來的數(shù)據(jù)進行驗證。
核心代碼:
int main(void) {long int i;unsigned int fpga_read_data;system_clock.initialize();fsmc.initialize();led.initialize();LED_GREEN_ON;/*FSMC2aê?*/while(1){ /*fmc2aê?*/for(i = 0;i < 256; i++){fpga_write(i,i); //?òFPGAD′êy?Y }for(i = 0;i < 100000; i++);for(i = 0;i < 256;i++){fpga_read_data = fpga_read(i); //′óFPGA?D?áè?êy?Yif(fpga_read_data != i){LED_GREEN_OFF;LED_RED_ON;while(1);}} } } 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);//--------------------clk----------------------------------// reg wr_clk1,wr_clk2,wr_clk3; always @(posedge pll_100m or negedge rst_n)beginif(!rst_n)beginwr_clk1 <= 1'd1;wr_clk2 <= 1'd1;endelse{wr_clk3,wr_clk2,wr_clk1} <= {wr_clk2,wr_clk1,wr}; //提取寫時鐘endwire clk = (!wr_clk1 | !rd);//--------------------db_out-------------------------------// wire [15:0]db_out;assign DB = !rd ? db_out : 16'hzzzz;//--------------------my_ram-------------------------------// my_ram u1(.address(AB),.clock(clk),.data(DB),.wren(!wr),.rden(!rd),.q(db_out) );//例化ram模塊//--------------------endmodule----------------------------// endmodule源代碼下載鏈接:
鏈接:http://pan.baidu.com/s/1misqyko 密碼:eg83
iCore4鏈接:
總結(jié)
以上是生活随笔為你收集整理的【iCore4 双核心板_FPGA】例程十一:FSMC总线通信实验——独立地址模式的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 区块链+税务的思考
- 下一篇: Android-TextView跑马灯效