色哟哟视频在线观看-色哟哟视频在线-色哟哟欧美15最新在线-色哟哟免费在线观看-国产l精品国产亚洲区在线观看-国产l精品国产亚洲区久久

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內(nèi)不再提示

基于Zynq FPGA對雷龍SD NAND的測試

深圳市雷龍發(fā)展有限公司 ? 2023-12-22 17:45 ? 次閱讀

文章目錄

一、SD NAND特征

1.1 SD卡簡介

1.2 SD卡Block圖

二、SD卡樣片

三、Zynq測試平臺搭建

3.1 測試流程

3.2 SOC搭建

四、軟件搭建

五、測試結果

六、總結

一、SD NAND特征

1.1 SD卡簡介

??雷龍的SD NAND有很多型號,在測試中使用的是CSNP4GCR01-AWM與CSNP32GCR01-AOW。芯片是基于NAND FLASH和 SD控制器實現(xiàn)的SD卡。具有強大的壞塊管理和糾錯功能,并且在意外掉電的情況下同樣能保證數(shù)據(jù)的安全。

??其特點如下:

接口支持SD2.0 2線或4線;

電壓支持:2.7V-3.6V;

默認模式:可變時鐘速率0 - 25MHz,高達12.5 MB/s的接口速度(使用4條并行數(shù)據(jù)線)

高速模式:可變時鐘速率0 - 50MHz,高達25 MB/s的接口速度(使用4條并行數(shù)據(jù)線)

工作溫度:-40°C ~ +85°C

存儲溫度:-55°C ~ +125°C

待機電流小于250uA

修正內(nèi)存字段錯誤;

內(nèi)容保護機制——符合SDMI最高安全標準

SDNAND密碼保護(CMD42 - LOCK_UNLOCK)

采用機械開關的寫保護功能

內(nèi)置寫保護功能(永久和臨時)

應用程序特定命令

舒適擦除機制

??該SD卡支持SDIO讀寫和SPI讀寫,最高讀寫速度可達25MB/s,實際讀寫速度要結合MCU和接口情況實測獲得。通常在簡單嵌入式系統(tǒng)并對讀寫速度要求不高的情況下,會使用SPI協(xié)議進行讀寫。但不管使用SDIO還是SPI都需要符合相關的協(xié)議規(guī)范,才能建立相應的文件系統(tǒng);

1.2 SD卡Block圖

get?code=M2U4NTY5ODk0YTZkMjFkOWI3MWVlZmU4OTM3M2VjNTcsMTcwMzIzNzI1Mzg3NQ==

?該SD卡封裝為LGA-8;引腳分配與定義如下;在這里插入圖片描述:

get?code=YmQxZTRmYjU0ZGI5OTNhOTVlZDQzOWYxNDQwMmUyM2EsMTcwMzIzNzI1Mzg3NQ==

二、SD卡樣片

??與樣片同時寄來的還有轉接板,轉接板將LGA-8封裝的芯片轉接至SD卡封裝,這樣只需將轉接板插入SD卡卡槽即可使用。

在這里插入圖片描述:

get?code=ZmQ3NzUyZGU3MDdmZmExNTQ4ODkyN2U0NzEzNmNjMDEsMTcwMzIzNzI1Mzg3NQ==

三、Zynq測試平臺搭建

  • ??測試平臺為 Xilinx 的Zynq 7020 FPGA芯片;
  • ??板卡:Digilent Zybo Z7
  • ??Vivado版本:2018.3
  • ??文件系統(tǒng):FATFS
  • ??SD卡接口:SD2.0

3.1 測試流程

??本次測試主要針對4G和32G兩個不同容量的SD卡,在Zynq FPGA上搭建SD卡讀寫回路,從而對SD卡讀寫速度進行測試,并檢驗讀寫一致性;

測試流程:

??進入測試程序前,首先會對SD卡初始化并初始化建立FATFS文件系統(tǒng),隨后進入測試SD卡測試程序,在測試程序中,會寫入一定大小的文件,然后對寫入文件的時間進行測量,得到寫入時間;然后再將寫入的文件讀出,測量獲得讀出時間,并將讀出數(shù)據(jù)與寫入數(shù)據(jù)相比較,檢測是否讀寫出錯。

??通過寫入時間、讀出時間可計算得到寫入速度、讀出速度;將以上過程重復100次并打印報告。

get?code=NGM4YzJlOGY1ZTdmODFjZjQxMDFjNDkxNGFjYjA2NDcsMTcwMzIzNzI1Mzg3NQ==

3.2 SOC搭建

??硬件搭建框圖如下,我們在本次系統(tǒng)中使用PS端的SDIO接口來驅動SD NAND芯片,并通過UART向PC打印報告;

??PL端的硬件搭建也很簡單,只需一個Timer定時器來做時間測量;

get?code=NTNhNTBkNzkxMzE2MGRhMGNkYTczNjFkYTVjMGUxZjgsMTcwMzIzNzI1Mzg3NQ==

我們直接使用Zybo板卡文件創(chuàng)建一個工程,工程會將Zybo具有的硬件資源配置好;

get?code=MzY0MWQ4ZjBlNTY2NWUxNTA4OGIwOWExM2RjYTg5YTMsMTcwMzIzNzI1Mzg3Ng==

首先點擊setting->IP->Repository->+;添加Timer IP核的路徑,Timer IP核會在工程中給出;

get?code=Yjk1ZDk5ZGJiNWMyMmIyZjdiMDE4YmU0MWE2N2FiNGMsMTcwMzIzNzI1Mzg3Ng==

?點擊Create Block Design創(chuàng)建BD工程

get?code=YmNmZGY0OGY4YTBlYTkwZjE0ODE3NzI2ZjUzYWM3ODEsMTcwMzIzNzI1Mzg3Ng==

?在創(chuàng)建的過程中添加Zynq 內(nèi)核;

get?code=ZjkzYzQ0YjM4OTJmMjcxMGZkMTJhYWE0MDMyNDY0NzcsMTcwMzIzNzI1Mzg3Ng==

由于我們使用了板卡文件,所以內(nèi)核IP是配置好的,我們只需稍作修改即可,如果是其他板卡,則需要自行配置DDR等配置;

??雙擊內(nèi)核IP,點擊Clock Configuration->PL Fabric Clocks,將FCLK_CLK0的時鐘頻率修改為100Mhz

get?code=NTg0ZjhkMjEwOGMxZmI1NTMwY2E4Njc5NTM0MDZiYmYsMTcwMzIzNzI1Mzg3Ng==

?添加TimerA IP;

get?code=NGJlZTQ3NjFkZTExMDc1NjI0OGZlY2U2YTE3MjllNGEsMTcwMzIzNzI1Mzg3Ng==

依次點擊上方的自動設計,完成SOC搭建;

get?code=NDQ5MzRhMDljYjk1YTA4OTlkZGM5MjkxMDRiMmEyNzQsMTcwMzIzNzI1Mzg3Ng==

?點擊BD設計,并創(chuàng)建頂層文件

get?code=YWVkNzhjMzJjYjUzZTNhNTNiYTUzZTU5MjdjNjljMmQsMTcwMzIzNzI1Mzg3Ng==

生成比特流文件;

get?code=ODVjNDU5NDdjYWEyNzEwZTFiNmJlNmYzYWM0ZDcwZWIsMTcwMzIzNzI1Mzg3Ng==

在生成比特流文件后,將其導入SDK;

??點擊Export->Export Hardware,導出硬件;然后點擊Launch SDK打開SDK進行軟件設計;

get?code=M2Y0YmE2NjhiODE4NjUwMzA5NjBlM2M5MTlhOGEwNzcsMTcwMzIzNzI1Mzg3Ng==get?code=YzQyM2RjMWY1ZjZkYWJkMDQzMmI0NzQ2MDdiYjYzOTAsMTcwMzIzNzI1Mzg3Ng==

四、軟件搭建

??在SDK中新建一個空白工程;

??點擊file -> new -> Application project;

get?code=OTFiMjQxZmRmOTZiY2ZhMjRjYzA3MTUwNjM4ZDkzMzQsMTcwMzIzNzI1Mzg3Ng==

在新建的過程中創(chuàng)建一個main.c文件,并在里面編寫測試程序如下:

??在每次讀寫開始前,通過TimerA0_start()函數(shù)開始計時,在讀寫結束后可以通過TimerA0_stop()結束計時,從而測得消耗時間。

??相應的Timer驅動函數(shù)在user/TimerA_user.c中定義;

  1. #include "xparameters.h" /* SDK generated parameters */
  2. #include "xsdps.h" /* SD device driver */
  3. #include "xil_printf.h"
  4. #include "ff.h"
  5. #include "xil_cache.h"
  6. #include "xplatform_info.h"
  7. #include "time.h"
  8. #include "../user/headfile.h"
  9. #define PACK_LEN 32764
  10. static FIL fil; /* File object */
  11. static FATFS fatfs;
  12. static char FileName[32] = "Test.txt";
  13. static char *SD_File;
  14. char DestinationAddress[PACK_LEN] ;
  15. char txt[1024];
  16. char test_buffer[PACK_LEN];
  17. void TimerA0_init()
  18. {
  19. TimerA_reset(TimerA0);//reset timerA device
  20. TimerA_Set_Clock_Division(TimerA0,100);//divide clock as 100000000/100 = 1Mhz
  21. TimerA_Stop_Counter(TimerA0);//stop timerA
  22. }
  23. void TimerA0_start()
  24. {
  25. TimerA_SetAs_CONTINUS_Mode(TimerA0);
  26. }
  27. void TimerA0_stop()
  28. {
  29. TimerA_Stop_Counter(TimerA0);
  30. }
  31. uint32 SDCard_test()
  32. {
  33. uint8 Res;
  34. uint32 NumBytesRead;
  35. uint32 NumBytesWritten;
  36. uint32 BuffCnt;
  37. uint8 work[FF_MAX_SS];
  38. uint32 take_time=0;
  39. uint32 speed = 0;
  40. uint32 test_time = 0;
  41. uint32 w_t=0;
  42. uint32 r_t=0;
  43. float wsum = 0;
  44. float rsum = 0;
  45. TCHAR *Path = "0:/";
  46. for(int i=0;i
  47. {
  48. test_buffer[i] = 'a';
  49. }
  50. Res = f_mount(&fatfs, Path, 0);
  51. if (Res != FR_OK) {
  52. return XST_FAILURE;
  53. }
  54. Res = f_mkfs(Path, FM_FAT32, 0, work, sizeof work);
  55. if (Res != FR_OK) {
  56. return XST_FAILURE;
  57. }
  58. SD_File = (char *)FileName;
  59. Res = f_open(&fil, SD_File, FA_CREATE_ALWAYS | FA_WRITE | FA_READ);
  60. if (Res) {
  61. return XST_FAILURE;
  62. }
  63. Res = f_lseek(&fil, 0);
  64. if (Res) {
  65. return XST_FAILURE;
  66. }
  67. while(1)
  68. {
  69. TimerA_reset(TimerA0);
  70. TimerA0_start();
  71. Res = f_write(&fil, (const void*)test_buffer, PACK_LEN,
  72. &NumBytesWritten);
  73. TimerA0_stop();
  74. take_time = TimerA_Read_Counter_Register(TimerA0);
  75. w_t+=take_time;
  76. xil_printf("--------------------------------\n");
  77. xil_printf("take time:%d us\n",take_time);
  78. speed = PACK_LEN*(1000000/((float)(take_time)));
  79. sprintf(txt,"write speed:%.2f MB/s\n",(float)(speed)/1024/1024);
  80. wsum = wsum+speed;
  81. xil_printf(txt);
  82. xil_printf("--------------------------------\n");
  83. if (Res) {
  84. return XST_FAILURE;
  85. }
  86. Res = f_lseek(&fil, 0);
  87. if (Res) {
  88. return XST_FAILURE;
  89. }
  90. TimerA_reset(TimerA0);
  91. TimerA0_start();
  92. Res = f_read(&fil, (void*)DestinationAddress, PACK_LEN,
  93. &NumBytesRead);
  94. TimerA0_stop();
  95. take_time = TimerA_Read_Counter_Register(TimerA0);
  96. r_t+=take_time;
  97. xil_printf("--------------------------------\n");
  98. xil_printf("take time:%d us\n",take_time);
  99. speed = PACK_LEN*(1000000/((float)(take_time)));
  100. sprintf(txt,"read speed:%.2f MB/s\n",(float)(speed)/1024/1024);
  101. rsum = rsum+speed;
  102. xil_printf(txt);
  103. xil_printf("--------------------------------\n");
  104. if (Res) {
  105. return XST_FAILURE;
  106. }
  107. for(BuffCnt = 0; BuffCnt < PACK_LEN; BuffCnt++){
  108. if(test_buffer[BuffCnt] != DestinationAddress[BuffCnt]){
  109. xil_printf("%dno",BuffCnt);
  110. return XST_FAILURE;
  111. }
  112. }
  113. xil_printf("test num:%d data check right!\n",test_time+1);
  114. test_time++;
  115. if(test_time==100)
  116. {
  117. sprintf(txt,"Total write: %.2f KB,Take time:%.2f ms, Write speed:%.2f MB/s\n",PACK_LEN*100/1024.0,w_t/100.0/1000.0,wsum/100/1024/1024);
  118. xil_printf(txt);
  119. sprintf(txt,"Total read: %.2f KB,Take time:%.2f ms, Read speed:%.2f MB/s\n",PACK_LEN*100/1024.0,r_t/100.0/1000.0,rsum/100/1024/1024);
  120. xil_printf(txt);
  121. Res = f_close(&fil);
  122. if (Res) {
  123. return XST_FAILURE;
  124. }
  125. return 0;
  126. }
  127. }
  128. }
  129. int main(void)
  130. {
  131. TimerA0_init();
  132. SDCard_test();
  133. xil_printf("finish");
  134. return 0;
  135. }

五、測試結果

??經(jīng)測試,兩種型號的芯片讀寫速度如下圖表所示。

??其SD NAND的讀寫速度隨著讀寫數(shù)據(jù)量的增加而增加,并且讀速率大于寫速率,這符合SD卡的特性;

??對比兩種型號SD NAND芯片,發(fā)現(xiàn)CSNP32GCR01-AOW型號具有更高的讀寫速度;

get?code=YmIxMzU2YjU2MDJjMWVmYzViMmVmYzczNjlmNmU5ODYsMTcwMzIzNzI1Mzg3Ng==get?code=NGNlMzk5Zjc5NTEzYWM5MzM4N2QxZGNmNWRkMjEzNjYsMTcwMzIzNzI1Mzg3Ng==get?code=NjJmYWI2MDE4YTFhYWY3YmY2ZjY0MjA2Yzc5MWIyYmUsMTcwMzIzNzI1Mzg3Ng==

六、總結

??本來打算拿這些樣片去試試信息安全領域是否有所應用,但發(fā)現(xiàn)其似乎內(nèi)置了復位或初始化,導致無法提取上電時的不確定值,故無法提取該SD NAND的物理不可克隆特性,所以這方面的測試無法進行;

??對于芯片正常讀寫的測試結果,還是很讓人滿意的,芯片的價格也很合理。并且LGA-8封裝更適合無卡槽的嵌入式開發(fā)板設計,在一定的應用領域有著簡化硬件設計、減小硬件面積的功能。

————————————————

【本文轉載自CSDN,作者:PPRAM】

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權轉載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學習之用,如有內(nèi)容侵權或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • FPGA
    +關注

    關注

    1629

    文章

    21729

    瀏覽量

    603009
  • 測試
    +關注

    關注

    8

    文章

    5269

    瀏覽量

    126599
  • NAND
    +關注

    關注

    16

    文章

    1681

    瀏覽量

    136121
收藏 人收藏

    評論

    相關推薦

    關于SD NAND 的概述

    的類型,擦寫次數(shù)可達5~10萬次,保證了SD NAND的耐用性。   高低溫測試SD NAND已通過10k次隨機掉電和高低溫沖擊
    發(fā)表于 12-06 11:22

    SD NAND 概述

    SD NAND是一種小型、可表面貼裝的存儲解決方案,適用于各種嵌入式系統(tǒng)和便攜式設備。SD NAND技術是近年來在存儲領域內(nèi)的一項創(chuàng)新,它結合了傳統(tǒng)
    的頭像 發(fā)表于 12-06 11:21 ?153次閱讀

    SD NAND技術簡介

    SD NAND是一種基于NAND Flash技術的嵌入式存儲解決方案,具備SD卡協(xié)議兼容性。它結合了NAND存儲的高密度特性和
    的頭像 發(fā)表于 12-05 15:32 ?144次閱讀
    <b class='flag-5'>SD</b> <b class='flag-5'>NAND</b>技術簡介

    雷龍CS SD NAND:貼片式TF卡體驗與性能測試

    最近有幸獲得了雷龍發(fā)展提供的貼片式TF卡樣品,收到的快遞中包含兩片 CS SD NAND 芯片和一個轉接板。以下是芯片和轉接板的實物照片: 產(chǎn)品簡介 此次測試的芯片型號
    發(fā)表于 11-26 10:04

    一文帶你了解什么是SD NAND存儲芯片

    不是SD NAND具體原因在SD測試下面會說明,具體實驗步驟如下。本次使用的是SD卡。   創(chuàng)建Vivado工程文件,選擇對應的芯片型號
    發(fā)表于 11-13 15:20

    Arduino程序:實現(xiàn)SD NAND(貼片sd卡)的讀寫功能

      單片機上傳程序的時候,有時候感覺它的rom和 ram有時直接限制了他的使用,之前使用eeprom,和sd卡模塊. []()   然后最近看到了出的SD NAND 就是下面這個
    發(fā)表于 11-07 17:45

    國產(chǎn)安路FPGA SD NAND FLASH 初步描述

    等優(yōu)點。這一節(jié)我們主要是介紹一下SD NAND FLASH,該應用實例的SD NAND FLASH采用深圳市雷龍發(fā)展有限公司的CSNP1GC
    發(fā)表于 10-16 18:12

    SD NAND測試套件:提升存儲芯片驗證效率

    SD NAND轉接板和燒錄座是一種專為工程師設計的輔助工具,它能夠將不同尺寸的SD NAND芯片轉換為通用TF接口封裝,從而方便地進行性能測試
    的頭像 發(fā)表于 08-13 09:44 ?360次閱讀
    <b class='flag-5'>SD</b> <b class='flag-5'>NAND</b><b class='flag-5'>測試</b>套件:提升存儲芯片驗證效率

    SD NAND芯片的測評與使用 基于卷積神經(jīng)網(wǎng)絡的數(shù)字識別

    和32gbit的SD NAND FLASH芯片以及一份測試板卡。 簡介: 根據(jù)官方文檔的描述,這款芯片采用LGA-8封裝,具有標準SDIO接口,并同時兼容SPI和SD接口。因此,可以直
    的頭像 發(fā)表于 07-24 18:08 ?1411次閱讀

    NAND flash測試-雷龍發(fā)展

      文章目錄 **  一、簡介** **  二、速度測試**   最近比較忙,也一直沒空發(fā)什么文章,這算是新年第一篇吧,正好最近收到了一個雷龍的flash芯片,先拿來玩一下吧。   有興趣的小伙伴
    發(fā)表于 06-14 16:25

    NAND flash測試-雷龍發(fā)展

    文章目錄 一、簡介 二、速度測試 最近比較忙,也一直沒空發(fā)什么文章,這算是新年第一篇吧,正好最近收到了一個雷龍的flash芯片,先拿來玩一下吧。 有興趣的小伙伴可以去雷龍官網(wǎng)找小姐姐領取一個免費試用
    的頭像 發(fā)表于 06-14 16:20 ?470次閱讀
    <b class='flag-5'>NAND</b> flash<b class='flag-5'>測試</b>-<b class='flag-5'>雷龍</b>發(fā)展

    SD NAND和SPI NAND的區(qū)別

    SD NAND和SPI NAND各有優(yōu)缺點,適用于不同的應用場景。SD NAND提供更高的讀寫速度和大容量存儲,適合需要高性能和大容量存儲的
    的頭像 發(fā)表于 06-04 14:26 ?2004次閱讀

    stm32 CubeMx 怎么實現(xiàn)SD卡/sd nand FATFS讀寫測試

    本實驗僅用于記錄和分享技術經(jīng)驗若涉及侵權請聯(lián)系我刪除。   stm32 CubeMx 實現(xiàn)SD卡/sd nand FATFS讀寫測試。   材料:stm32F407ZGT6開發(fā)板、
    發(fā)表于 01-09 17:37

    什么是SD NAND存儲芯片? SD NAND與TF卡的區(qū)別

    什么是SD NAND?它俗稱貼片式T卡,貼片式TF卡,貼片式SD卡,貼片式內(nèi)存卡,貼片式閃存卡,貼片式卡...等等。雖然SD NAND 和T
    的頭像 發(fā)表于 01-06 14:35 ?1774次閱讀
    什么是<b class='flag-5'>SD</b> <b class='flag-5'>NAND</b>存儲芯片? <b class='flag-5'>SD</b> <b class='flag-5'>NAND</b>與TF卡的區(qū)別

    什么是SD NAND存儲芯片?

    前言   大家好,我們一般在STM32項目開發(fā)中或者在其他嵌入式開發(fā)中,經(jīng)常會用到存儲芯片存儲數(shù)據(jù)。今天我和大家來介紹一款存儲芯片,我這里采用(雷龍) CS創(chuàng)世 SD NAND 。   S
    發(fā)表于 01-05 17:54
    主站蜘蛛池模板: 巨乳中文无码亚洲| 老太婆性BBWBBW| 麻豆区蜜芽区| 色婷婷激婷婷深爱五月小蛇| 亚洲字幕在线观看| WWW夜片内射视频在观看视频 | caoporen超碰在线视频| 国产成人久久AV免费看澳门| 久久精品国产在热亚洲完整版| 翘臀少妇被扒开屁股日出水爆乳| 亚洲国产在线视频精品| 94色94色永久网站| 国产亚洲精品久久久久| 男男gaygay拳头| 亚洲精品国产熟女久久久| good神马电影伦理午夜| 精品久久久麻豆国产精品| 日韩欧美高清一区| 综合久久伊人| 国产午夜电影在线观看不卡| 欧美片第1页 综合| 野花韩国在线观看| 国产成人久久精品AV| 免费国产足恋网站| 亚洲狠狠97婷婷综合久久久久| 把腿张开JI巴CAO死你H教室| 久久精品亚洲热综合一本| 甜性涩爱bt下载| Zoofilivideo人馿交| 久久婷婷五月综合色精品首页| 天天久久狠狠色综合| FREE另类老女人| 久久人妻少妇嫩草AV无码| 性欧美video另类hd高清| yellow在线中文| 麻豆文化传媒一区二区| 亚洲毛片网| 国产精品久久久久久久人人看 | 欧美高清69hd| 在线播放毛片| 狠狠撩色姣姣综合久久|