国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 系統 > iOS > 正文

nios ii小實驗——SDRAM讀寫

2019-11-06 09:04:11
字體:
來源:轉載
供稿:網友

實驗所用板子為altera DE2板子,FPGA為Cyclone II:EP2C35F672C6,quartus版本為13.0

1.管腳信息

[11:0]DRAM_ADDR : address

DRAM_BA_0 : bank address 0

DRAM_BA_1 : bank address 1

DRAM_CAS_N : column address strobe

DRAM_CKE : clock enable

DRAM_CLK : clock

DRAM_CS_N : chip select 

[15:0]DRAM_DQ : Data

DRAM_LDQM :lower byte data mask

DRAM_UDQM : upper byte data mask

DRAM_RAS_N : row address strobe

DRAM_WE_N :  write enable

2.實驗流程

1)建立工程

2)建立初始頂層文件

module work (  CLOCK_50,         // On Board 50 MHz  KEY,              // Pushbutton[3:0]  SW,               // Toggle Switch[17:0]  LEDR,             // LED Red[17:0]  DRAM_DQ,          // SDRAM Data bus 16 Bits  DRAM_ADDR,        // SDRAM Address bus 12 Bits  DRAM_LDQM,        // SDRAM Low-byte Data Mask   DRAM_UDQM,        // SDRAM High-byte Data Mask  DRAM_WE_N,        // SDRAM Write Enable  DRAM_CAS_N,       // SDRAM Column Address Strobe  DRAM_RAS_N,       // SDRAM Row Address Strobe  DRAM_CS_N,        // SDRAM Chip Select  DRAM_BA_0,        // SDRAM Bank Address 0  DRAM_BA_1,        // SDRAM Bank Address 1  DRAM_CLK,         // SDRAM Clock  DRAM_CKE          // SDRAM Clock Enable);input         CLOCK_50;   // On Board 50 MHzinput  [3:0]  KEY;        // Pushbutton[3:0]input  [17:0] SW;         // Toggle Switch[17:0]output [17:0] LEDR;       // LED Red[17:0]inout  [15:0] DRAM_DQ;    // SDRAM Data bus 16 Bitsoutput [11:0] DRAM_ADDR;  // SDRAM Address bus 12 Bitsoutput        DRAM_LDQM;  // SDRAM Low-byte Data Mask output        DRAM_UDQM;  // SDRAM High-byte Data Maskoutput        DRAM_WE_N;  // SDRAM Write Enableoutput        DRAM_CAS_N; // SDRAM Column Address Strobeoutput        DRAM_RAS_N; // SDRAM Row Address Strobeoutput        DRAM_CS_N;  // SDRAM Chip Selectoutput        output        DRAM_BA_0;  // SDRAM Bank Address 0output        DRAM_BA_1;  // SDRAM Bank Address 0output        DRAM_CLK;   // SDRAM Clockoutput        DRAM_CKE;   // SDRAM Clock Enableassign LEDR = SW;endmodule

3)編譯并導入管腳信息

4)建立Qsys

CPU: NiOS II/e

ram: total memory size 12288bytes

jtag_uart: default

sdram_controller: DE2板子上的SDRAM大小為8M

接線圖

修改CPU reset位置,自動生成地址,generate

將nios_ii.qsys文件添加入工程中

5)生成pll始終分頻,將輸入SDRAM的始終延時3ns(延時?前移?)

加入pll ip核,只需修改這兩處

6)完成硬件代碼

module work (  CLOCK_50,         // On Board 50 MHz  KEY,              // Pushbutton[3:0]  SW,               // Toggle Switch[17:0]  LEDR,             // LED Red[17:0]  DRAM_DQ,          // SDRAM Data bus 16 Bits  DRAM_ADDR,        // SDRAM Address bus 12 Bits  DRAM_LDQM,        // SDRAM Low-byte Data Mask   DRAM_UDQM,        // SDRAM High-byte Data Mask  DRAM_WE_N,        // SDRAM Write Enable  DRAM_CAS_N,       // SDRAM Column Address Strobe  DRAM_RAS_N,       // SDRAM Row Address Strobe  DRAM_CS_N,        // SDRAM Chip Select  DRAM_BA_0,        // SDRAM Bank Address 0  DRAM_BA_1,        // SDRAM Bank Address 1  DRAM_CLK,         // SDRAM Clock  DRAM_CKE          // SDRAM Clock Enable);input         CLOCK_50;   // On Board 50 MHzinput  [3:0]  KEY;        // Pushbutton[3:0]input  [17:0] SW;         // Toggle Switch[17:0]output [17:0] LEDR;       // LED Red[17:0]inout  [15:0] DRAM_DQ;    // SDRAM Data bus 16 Bitsoutput [11:0] DRAM_ADDR;  // SDRAM Address bus 12 Bitsoutput        DRAM_LDQM;  // SDRAM Low-byte Data Mask output        DRAM_UDQM;  // SDRAM High-byte Data Maskoutput        DRAM_WE_N;  // SDRAM Write Enableoutput        DRAM_CAS_N; // SDRAM Column Address Strobeoutput        DRAM_RAS_N; // SDRAM Row Address Strobeoutput        DRAM_CS_N;  // SDRAM Chip Selectoutput        output        DRAM_BA_0;  // SDRAM Bank Address 0output        DRAM_BA_1;  // SDRAM Bank Address 0output        DRAM_CLK;   // SDRAM Clockoutput        DRAM_CKE;   // SDRAM Clock Enableassign LEDR = SW;pll pll_u	(	.inclk0(CLOCK_50),	.c0(DRAM_CLK)	);	nios_ii u0 (        .clk_clk       (CLOCK_50),       //   clk.clk        .reset_reset_n (KEY[3]), // reset.reset_n        .sdram_addr    (DRAM_ADDR),    // sdram.addr        .sdram_ba      ({DRAM_BA_1,DRAM_BA_0}),      //      .ba        .sdram_cas_n   (DRAM_CAS_N),   //      .cas_n        .sdram_cke     (DRAM_CKE),     //      .cke        .sdram_cs_n    (DRAM_CS_N),    //      .cs_n        .sdram_dq      (DRAM_DQ),      //      .dq        .sdram_dqm     ({DRAM_UDQM,DRAM_LDQM}),     //      .dqm        .sdram_ras_n   (DRAM_RAS_N),   //      .ras_n        .sdram_we_n    (DRAM_WE_N)     //      .we_n    );endmodule8)編譯硬件代碼,并燒錄

9)打開nios II software編寫軟件代碼

10)軟件代碼

軟件代碼里,地址信息跳變嘗試了每次+1、+2、+4,在+4的情況下得到了正確數據。

推測這一情況與軟核為32位系統,SDRAM存儲空間為8位空間有關?

有待進一步探究

#include <stdio.h>#include"system.h"#include"io.h"int main(){	unsigned int i, j, k;	k = 236;  //隨便寫的一個數	PRintf("Hello from Nios II!/n");	for(i = 0; i<40; i = i + 4){		IOWR(SDRAM_BASE+i, 0, k);		printf("SDRAM_BASE+i = %d/t",SDRAM_BASE+i);		printf("k = %d/n",k);		k++;	}	for(i = 0; i<40; i = i + 4){		j = IORD(SDRAM_BASE+i, 0);		printf("data_%d = %d/n", SDRAM_BASE+i, j);	}	return 0;}

11)edit BSP -> bulid project -> run as NIOS II hardware燒錄軟件

3.讀寫結果

地址跳變每次 i = i +1; 數據讀寫與想象不同

地址跳變每次 i = i +2; 數據讀寫與想象不同

;

地址跳變每次 i = i +4; 忽略出現的奇怪的顯示,數據讀寫無誤

解決:SDRAM的數據一般占據4個地址,或者8個地址,存在對其的問題,因此地址為應該+4或者4的倍數。


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 天峨县| 当雄县| 道真| 青海省| 丽水市| 应用必备| 云浮市| 秀山| 紫金县| 英吉沙县| 浦北县| 嘉峪关市| 揭西县| 镇赉县| 斗六市| 宜城市| 五河县| 犍为县| 兴化市| 松潘县| 衡南县| 酒泉市| 明光市| 武汉市| 内江市| 北流市| 广丰县| 满洲里市| 图们市| 汨罗市| 上高县| 南涧| 乐业县| 克山县| 琼海市| 陇南市| 邯郸市| 乌鲁木齐县| 清原| 丹凤县| 攀枝花市|