国产精品久久久aaaa,日日干夜夜操天天插,亚洲乱熟女香蕉一区二区三区少妇,99精品国产高清一区二区三区,国产成人精品一区二区色戒,久久久国产精品成人免费,亚洲精品毛片久久久久,99久久婷婷国产综合精品电影,国产一区二区三区任你鲁

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

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

3天內不再提示

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

深圳市雷龍發展有限公司 ? 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控制器實現的SD卡。具有強大的壞塊管理和糾錯功能,并且在意外掉電的情況下同樣能保證數據的安全。

??其特點如下:

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

電壓支持:2.7V-3.6V;

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

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

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

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

待機電流小于250uA

修正內存字段錯誤;

內容保護機制——符合SDMI最高安全標準

SDNAND密碼保護(CMD42 - LOCK_UNLOCK)

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

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

應用程序特定命令

舒適擦除機制

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

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
  • ??文件系統:FATFS
  • ??SD卡接口:SD2.0

3.1 測試流程

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

測試流程:

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

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

get?code=NGM4YzJlOGY1ZTdmODFjZjQxMDFjNDkxNGFjYjA2NDcsMTcwMzIzNzI1Mzg3NQ==

3.2 SOC搭建

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

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

get?code=NTNhNTBkNzkxMzE2MGRhMGNkYTczNjFkYTVjMGUxZjgsMTcwMzIzNzI1Mzg3NQ==

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

get?code=MzY0MWQ4ZjBlNTY2NWUxNTA4OGIwOWExM2RjYTg5YTMsMTcwMzIzNzI1Mzg3Ng==

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

get?code=Yjk1ZDk5ZGJiNWMyMmIyZjdiMDE4YmU0MWE2N2FiNGMsMTcwMzIzNzI1Mzg3Ng==

?點擊Create Block Design創建BD工程

get?code=YmNmZGY0OGY4YTBlYTkwZjE0ODE3NzI2ZjUzYWM3ODEsMTcwMzIzNzI1Mzg3Ng==

?在創建的過程中添加Zynq 內核;

get?code=ZjkzYzQ0YjM4OTJmMjcxMGZkMTJhYWE0MDMyNDY0NzcsMTcwMzIzNzI1Mzg3Ng==

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

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

get?code=NTg0ZjhkMjEwOGMxZmI1NTMwY2E4Njc5NTM0MDZiYmYsMTcwMzIzNzI1Mzg3Ng==

?添加TimerA IP;

get?code=NGJlZTQ3NjFkZTExMDc1NjI0OGZlY2U2YTE3MjllNGEsMTcwMzIzNzI1Mzg3Ng==

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

get?code=NDQ5MzRhMDljYjk1YTA4OTlkZGM5MjkxMDRiMmEyNzQsMTcwMzIzNzI1Mzg3Ng==

?點擊BD設計,并創建頂層文件

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==

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

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

??相應的Timer驅動函數在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. }

五、測試結果

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

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

??對比兩種型號SD NAND芯片,發現CSNP32GCR01-AOW型號具有更高的讀寫速度;

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

六、總結

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

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

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

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

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

    關注

    1660

    文章

    22412

    瀏覽量

    636303
  • 測試
    +關注

    關注

    9

    文章

    6203

    瀏覽量

    131357
  • NAND
    +關注

    關注

    16

    文章

    1756

    瀏覽量

    141048
收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評論

    相關推薦
    熱點推薦

    從NOR Flash 到 NAND Flash 和SD NAND,從底層結構到應用差異

    )   磨損均衡與垃圾回收   OP(預留空間)策略   當這些機制完善后,尤其是 SLC NAND,其性能和壽命遠優于 NOR,且容量價格優勢明顯。   六、CS SD NAND:讓 NAN
    發表于 03-05 18:23

    CS創世 SD NAND測試報告

    一次偶然的機會,很幸運得到深圳市雷龍發展有限公司代理的創世SD NAND存儲芯片贈送,今天收到了芯片和測試板。雷龍也很破費,芯片和
    發表于 01-09 18:07

    從NOR Flash到NAND Flash和SD NAND,從底層結構到應用差異

    )   磨損均衡與垃圾回收   OP(預留空間)策略   當這些機制完善后,尤其是 SLC NAND,其性能和壽命遠優于 NOR,且容量價格優勢明顯。   六、CS SD NAND:讓 NAN
    發表于 12-08 17:54

    SD NAND、TF卡、SD卡的應用領域大揭秘

    在如今這個數據爆炸的時代,各類存儲設備猶如繁星般閃耀,而SD NAND、TF卡和SD卡更是其中的佼佼者。它們看似相似,實則各有千秋,在不同的領域和場景中發揮著獨特的作用。今天,就讓我們一起深入探索這三者的應用奧秘。
    的頭像 發表于 11-30 15:16 ?959次閱讀
    <b class='flag-5'>SD</b> <b class='flag-5'>NAND</b>、TF卡、<b class='flag-5'>SD</b>卡的應用領域大揭秘

    解鎖SD NAND、TF卡、SD卡的應用密碼

    在科技飛速發展的今天,數據存儲的需求滲透到生活與工作的每一個角落——從手腕上的智能手表,到專業攝影師的相機,再到工廠里的工業路由器,都離不開高效可靠的存儲介質。SD NAND、TF卡和SD卡作為其中
    的頭像 發表于 11-24 11:04 ?522次閱讀
    解鎖<b class='flag-5'>SD</b> <b class='flag-5'>NAND</b>、TF卡、<b class='flag-5'>SD</b>卡的應用密碼

    一文秒懂XTX SD NAND

    :原理、性能與應用 隨著消費電子、工業控制、汽車電子和安防監控等領域對高密度、低成本存儲需求的不斷攀升,SD NAND閃存因其體積小、集成度高、易于部署的特點,成為SD卡(SD、SDH
    的頭像 發表于 10-30 08:38 ?795次閱讀
    一文秒懂XTX <b class='flag-5'>SD</b> <b class='flag-5'>NAND</b>

    解鎖存儲密碼:SD NAND、TF卡、SD卡的應用全景

    在數據洪流的時代,存儲介質就如同數字世界的基石,支撐著各類設備的正常運轉。SD NAND、TF卡和SD卡,雖同屬NAND Flash存儲介質家族,卻因各自獨特的“個性”,在不同領域綻放
    的頭像 發表于 10-29 14:24 ?652次閱讀

    SD NAND寫保護問題的分析

    說起SD NAND /SD卡寫保護的問題,我們先分析一下出現寫保護的一些原因 首先,我們先除去SD大卡的物理開關的問題,目前TF卡和SD
    的頭像 發表于 10-21 10:28 ?523次閱讀
    <b class='flag-5'>SD</b> <b class='flag-5'>NAND</b>寫保護問題的分析

    基于ZYNQ的創世SD NAND卡讀寫TXT文本實驗

    在之前的介紹中,我們介紹了雷龍SDNAND卡的焊接以及用途。由于SDNAND卡具有容量大,操作簡單,可插拔等的特點,經常作為大容量的存儲介質用來保存數據。本實驗我們來使用FPGA雷龍SDNAND
    的頭像 發表于 09-22 14:30 ?537次閱讀
    基于<b class='flag-5'>ZYNQ</b>的創世<b class='flag-5'>SD</b> <b class='flag-5'>NAND</b>卡讀寫TXT文本實驗

    一文讀懂 SD NAND,小白也能秒變存儲技術大神

    SD NAND 是一種貼片式存儲芯片,內部集成 NAND Flash 和 SD 控制器,兼容 SD 協議,可直接焊接在 PCB 上,無需插卡
    的頭像 發表于 08-19 14:40 ?2262次閱讀
    一文讀懂 <b class='flag-5'>SD</b> <b class='flag-5'>NAND</b>,小白也能秒變存儲技術大神

    SD卡—雷龍 SD NAND

    一、SD卡介紹 1.基本介紹 本質:nand flash + 控制芯片 1.SD卡 ,Secure Digital Card,稱為安全數字卡(安全數碼卡)。SD卡系列主要有三種:
    的頭像 發表于 07-21 17:59 ?3752次閱讀
    <b class='flag-5'>SD</b>卡—<b class='flag-5'>雷龍</b> <b class='flag-5'>SD</b> <b class='flag-5'>NAND</b>

    【嵌入式開發】SD卡—雷龍 SD NAND

    、R7。 R1響應格式: 2.SD卡操作步驟介紹 SPI模式下 SD卡初始化 SD卡單塊數據塊讀取流程 五、雷龍 SD
    發表于 07-21 17:56

    NAND Flash與SD NAND的存儲扇區架構差異

    NAND Flash?和?SD卡(SD NAND)的存儲扇區分配表都是用于管理存儲設備中扇區的分配信息。它們記錄了哪些扇區已被使用、哪些是空閑的,以及文件或數據與扇區的對應關系,以便實
    的頭像 發表于 03-13 15:20 ?1884次閱讀
    <b class='flag-5'>NAND</b> Flash與<b class='flag-5'>SD</b> <b class='flag-5'>NAND</b>的存儲扇區架構差異

    Nand flash 和SD卡(SD NAND)存儲扇區分配表異同

    NAND Flash 和 SD卡(SD NAND)的存儲扇區分配表在原理上有相似之處,但由于二者的結構和應用場景不同,也存在一些差異。以下是它們的異同點和用法介紹:相同點: 基本功
    發表于 03-13 10:45

    [上手體驗]雷龍SD NAND:比TF卡更小更耐用

    前幾天,有幸得到了深圳雷龍發展公司送來的SD NAND樣品。他們給了兩顆32Gbit的SD NAND以及一塊轉接板,并且已經將
    發表于 03-08 14:28