<output id="qn6qe"></output>

    1. <output id="qn6qe"><tt id="qn6qe"></tt></output>
    2. <strike id="qn6qe"></strike>

      亚洲 日本 欧洲 欧美 视频,日韩中文字幕有码av,一本一道av中文字幕无码,国产线播放免费人成视频播放,人妻少妇偷人无码视频,日夜啪啪一区二区三区,国产尤物精品自在拍视频首页,久热这里只有精品12

      【設(shè)計(jì)經(jīng)驗(yàn)】3、ISE中燒錄QSPI Flash以及配置mcs文件的加載速度與傳輸位寬

      一、軟件與硬件平臺(tái)

             軟件平臺(tái):

                    操作系統(tǒng):Windows 7 64-bit

                    開(kāi)發(fā)套件:ISE14.7

             硬件平臺(tái):

                    FPGA型號(hào):XC6SLX45-CSG324

                    QSPI Flash型號(hào):W25Q128BV

      二、背景介紹

        在FPGA開(kāi)發(fā)過(guò)程中,如果我們把bit文件下載到FPGA中,那么當(dāng)FPGA掉電以后,bit文件就丟失,再次上電的時(shí)候,代碼就不會(huì)運(yùn)行了。如果想掉電以后,代碼還可以運(yùn)行,那么必須把編譯好的文件下載到外部的QSPI Flash中。當(dāng)文件下載到外部的QSPI Flash中以后,由于QSPI Flash是一種非易失性存儲(chǔ)器,掉電以后里面的數(shù)據(jù)并不會(huì)丟失,待重新上電以后,F(xiàn)PGA會(huì)自動(dòng)讀取QSPI Flash中的數(shù)據(jù)把代碼加載到FPGA內(nèi)部的RAM中運(yùn)行。

        由于bit不能直接下載到QSPI Flash中,所以必須先把bit文件轉(zhuǎn)化為.mcs文件或者.bin文件,然后才能下載到QSPI Flash中。

        本文主要教大家如何把bit文件轉(zhuǎn)化為.bin文件和.mcs文件,然后下載到外部的QSPI Flash中。同時(shí)為了加快上電以后FPGA加載QSPI Flash中mcs文件的速度,我們可以把bit文件配置為4線(xiàn)模式(前提是你的硬件必須支持四線(xiàn)模式),并修改加載的時(shí)鐘頻率,從而大大加快FPGA的啟動(dòng)速度。

      三、目標(biāo)任務(wù)

             1、把編譯好的bit文件轉(zhuǎn)化為.bin文件

             2、把編譯好的bit文件轉(zhuǎn)化為.mcs文件

             3、把.bin文件或者.mcs文件燒錄到外部的QSPI Flash中

             4、修改.bit文件的模式以及支持的時(shí)鐘頻率

      四、待測(cè)代碼

      module led_top
      (
          input           I_clk       ,
          input           I_rst_n     ,
          output  [3:0]   O_led_out
      );
      
      reg  [31:0]  R_cnt_ls      ;
      wire         W_clk_ls      ;
      reg          R_clk_ls_reg  ;
      reg  [3:0]   R_led_out_reg ;
      
      //////////////////////////////////////////////////////////////////
      // 功能:產(chǎn)生1s的時(shí)鐘
      //////////////////////////////////////////////////////////////////
      always @(posedge I_clk or negedge I_rst_n)
      begin
          if(!I_rst_n)
              begin
                  R_cnt_ls        <= 32'd0 ; 
                  R_clk_ls_reg    <= 1'b1  ;
              end 
          else if(R_cnt_ls == 32'd24_999_999)
              begin
                  R_cnt_ls        <= 32'd0          ;
                  R_clk_ls_reg    <= ~R_clk_ls_reg  ;  
              end
          else
              R_cnt_ls <= R_cnt_ls + 1'b1 ;          
      end
      
      assign W_clk_ls = R_clk_ls_reg ;
      
      //////////////////////////////////////////////////////////////////
      // 功能:對(duì)輸出寄存器進(jìn)行移位產(chǎn)生流水效果
      //////////////////////////////////////////////////////////////////
      always @(posedge W_clk_ls or negedge I_rst_n)
      begin
          if(!I_rst_n) 
              R_led_out_reg <= 4'b0001 ; 
          else if(R_led_out_reg == 4'b1000)
              R_led_out_reg <= 4'b0001 ;
          else    
              R_led_out_reg <= R_led_out_reg << 1 ;             
      end
      
      assign O_led_out = ~R_led_out_reg ;
      
      endmodule

       

        寫(xiě)好待測(cè)代碼,并添加物理約束文件綁定好管腳,我的開(kāi)發(fā)板上的約束文件如下

      NET I_clk LOC = V10 | TNM_NET = sys_clk_pin | IOSTANDARD = "LVCMOS33";
      TIMESPEC TS_sys_clk_pin = PERIOD sys_clk_pin 50000 kHz;
      
      NET I_rst_n           LOC = N4 | IOSTANDARD = "LVCMOS15"; ## SW2 pushbutton
      
      NET O_led_out<0>    LOC = V5 | IOSTANDARD = "LVCMOS33";       ## LED1
      
      NET O_led_out<1>    LOC = R3 | IOSTANDARD = "LVCMOS33";       ## LED2
      
      NET O_led_out<2>    LOC = T3 | IOSTANDARD = "LVCMOS33";       ## LED3
      
      NET O_led_out<3>    LOC = T4 | IOSTANDARD = "LVCMOS33";       ## LED4

       

      五、任務(wù)

      一、把.bit文件轉(zhuǎn)化為.bin文件。

        1、編寫(xiě)好代碼和約束文件,雙擊Generate Programming File成bit

        2、如果上一步你沒(méi)做任何設(shè)置的話(huà)你的工程目錄下只會(huì)產(chǎn)生一個(gè)bit文件,如果需要產(chǎn)生bin文件的話(huà),選中Generate Programming File,右鍵選擇Process Properties...

        3、在彈出的窗口中單擊General Options,并勾選-g Binary選項(xiàng),并點(diǎn)擊最下面的OK

        4、Generate Programming File前面變成了“問(wèn)號(hào)”圖標(biāo)

        5、重新雙擊Generate Programming File,完畢以后工程目錄就生成了.bin文件

       

        在ISE不支持bin文件下載到QSPI Flash,但是Vivado支持,后續(xù)會(huì)有Vivado調(diào)試教程以及燒錄教程。

       

      二、把.bit文件轉(zhuǎn)化為.mcs文件。

        1、編寫(xiě)好代碼和約束文件,雙擊Generate Programming File成.bit文件

        2、雙擊Configure Target Device

        3、在彈出的窗口中點(diǎn)擊OK

        4、在彈出的ISE iMPACT中雙擊Create PROM File(PROM File Formatter)

        5、在彈出的PROM File Formatter窗口中選擇Configure Signal FPGA,并點(diǎn)擊右邊綠色的箭頭進(jìn)入Step 2

        6、然后選擇Storage Device(bits)為外部QSPI Flash的容量,我的QSPI Flash型號(hào)是W25Q128BV,容量為128Mbits,所以我選擇128M。接著點(diǎn)擊的Add Storage Device,然后點(diǎn)擊綠色的箭頭進(jìn)入Step 3

        7、點(diǎn)擊上圖中的Add Storage Device,然后點(diǎn)擊下圖的箭頭進(jìn)入Step3

        8、設(shè)置Output File Name為.mcs文件的名字,我設(shè)置為和.bit文件的名字相同(這一項(xiàng)可以隨便設(shè)置)。設(shè)置Output File Location為.bit文件所在的目錄(這一項(xiàng)也可以隨便設(shè)置),F(xiàn)ile Format設(shè)置為MCS。

        9、點(diǎn)擊上圖中最下面的OK,彈出以下窗口

        10、在上圖中直接點(diǎn)擊OK,在彈出的新窗口中選擇要轉(zhuǎn)化的.bit文件并點(diǎn)擊右下角的“打開(kāi)”

        11、在彈出的新窗口中選擇NO

        12、在彈出的新窗口中選擇OK

        13、雙擊左側(cè)的Generate File...,生成.mcs文件

        14、生成完畢以后會(huì)出現(xiàn)Generate Succeeded字樣

        15、工程目錄下出現(xiàn)了.mcs文件

        16、雙擊Boundary Scan

        17、點(diǎn)擊Initialize Chain圖標(biāo)(這一步一定要保證開(kāi)發(fā)板處于上電狀態(tài)并且Jtag線(xiàn)連接正常)

        18、在彈出的窗口中選擇NO(因?yàn)槲覀凂R上要把.mcs燒錄到Flash中,而不是下載.bit文件,所以選擇NO)

        19、在新彈出的窗口中選擇OK

        20、雙擊FPGA上面的那個(gè)虛線(xiàn)框包裹起來(lái)的圖標(biāo)

       

        21、在彈出的文件選擇窗口中選擇之前生成好的.mcs文件,并點(diǎn)擊打開(kāi)

       

        22、接著在彈出的新窗口中選擇芯片型號(hào)為W25Q128BV,Data Width為1,點(diǎn)擊OK

       

        23、選中FPGA上面的FLASH圖標(biāo),右鍵在彈出的菜單中單擊Program

       

        24、在彈出的新窗口中選擇OK

       

        25、接著就進(jìn)入了燒錄QSPI Flash的過(guò)程,這個(gè)過(guò)程與下載.bit相比要慢的多,需要耐心等待

       

        26、下載成功以后出現(xiàn)Successful字樣

       

        27、接著關(guān)掉開(kāi)發(fā)板的電源然后再打開(kāi),等一小段時(shí)間以后,程序就開(kāi)始自動(dòng)運(yùn)行了。

       

      三、修改bit文件的配置,加快FPGA加載速度

        可以發(fā)現(xiàn),產(chǎn)生的.mcs文件只有3.89M,但是重新上電到程序開(kāi)始執(zhí)行卻花費(fèi)了好幾秒的時(shí)間,如果工程十分龐大,則FPGA選型的時(shí)候勢(shì)必會(huì)選擇邏輯資源更多的FPGA,那么編譯后產(chǎn)生的.mcs文件會(huì)大的多,上電后加載的時(shí)間也會(huì)更長(zhǎng),所以在實(shí)際項(xiàng)目中,往往會(huì)修改bit文件的配置參數(shù)來(lái)加快上電以后代碼的加載速度。具體步驟如下

       

        1、編寫(xiě)好代碼和約束文件,雙擊Generate Programming File成bit

        2、選中Generate Programming File,右鍵選擇Process Properties...

        3、在彈出的窗口中單擊Configuration Options,并設(shè)置Configuration Rate為26MHz,設(shè)置Set SPI Configuration Bus Width參數(shù)為4。并點(diǎn)擊最下面的OK

       

        注意:Configuration Rate這個(gè)參數(shù)的值不能超過(guò)你使用的QSPI Flash芯片手冊(cè)中指定的最高的讀頻率,大多數(shù)QSPI Flash的芯片手冊(cè)會(huì)在第一頁(yè)說(shuō)它們支持的頻率高達(dá)100M甚至更高,但是其實(shí)這個(gè)頻率并不是指芯片支持的讀數(shù)據(jù)頻率,F(xiàn)lash芯片支持的讀數(shù)據(jù)頻率一定要在芯片手冊(cè)電氣特性(Electrical Characteristics)那一節(jié)找。如果你選擇的時(shí)鐘頻率超過(guò)QSPI Flash支持的最高讀取頻率太多,出現(xiàn)的現(xiàn)象就是FPGA根本無(wú)法加載QSPI Flash中的鏡像文件導(dǎo)致FPGA啟動(dòng)失敗;如果你選擇的時(shí)鐘頻率超過(guò)QSPI Flash支持的最高讀取頻率一點(diǎn)點(diǎn)的話(huà),出現(xiàn)的現(xiàn)象就是FPGA加載QSPI Flash中的鏡像文件大概率失敗。所以一般選擇的Configuration Rate參數(shù)值要稍微低于QSPI Flash支持的最高讀頻率。

        舉三個(gè)例子:

        Micron公司的N25Q064A支持的最高頻率為108MHz,但支持的讀命令頻率為54MHz,對(duì)于這個(gè)器件來(lái)說(shuō)Configuration Rate不能選的高于54MHz

        Macronix公司的MX25L25645G支持的最高頻率為133MHz,但支持的讀命令頻率為50MHz,對(duì)于這個(gè)器件來(lái)說(shuō)Configuration Rate不能選的高于50MHz

        本文使用的Winbond公司的W25Q128BV支持的最高頻率為104MHz,但支持的讀命令頻率為33MHz,對(duì)于這個(gè)器件來(lái)說(shuō)Configuration Rate不能選的高于33MHz,我們選擇為26MHz

       

        另外要說(shuō)明的是Configuration Rate這個(gè)值對(duì)于不同的FPGA來(lái)說(shuō),值的范圍不同。我當(dāng)前使用的XC6SLX45支持的最高頻率僅為26MHz,而XC7K325T支持的最高頻率高達(dá)66MHz。

        還有一點(diǎn)要注意的是,Set SPI Configuration Bus Width可以設(shè)置為4的前提是你的開(kāi)發(fā)板上QSPI Flash和FPGA之間四根數(shù)據(jù)線(xiàn)都是連通的,并且PCB上建議做好四根數(shù)據(jù)線(xiàn)的蛇形等長(zhǎng)。

        4、接著重新生成.bit文件,然后把.bit文件按照上文的方法生成.mcs文件下載到QSPI Flash中,這個(gè)過(guò)程不在重復(fù)。

        5、燒錄完畢以后,重新給開(kāi)發(fā)板斷電然后再上電,你會(huì)發(fā)現(xiàn)上電的瞬間,程序就開(kāi)始運(yùn)行了,幾乎感覺(jué)不到等待的時(shí)間。由于XC6SLX45這個(gè)器件的資源相較于7系列FPGA來(lái)說(shuō)邏輯資源并不算多,生成的mcs文件并不算大,所以才這么快,而對(duì)于高端一點(diǎn)的FPGA來(lái)說(shuō),F(xiàn)PGA編譯后的鏡像文件能達(dá)到十幾兆甚至更大,比如XC7K325t生成的鏡像文件約為10M左右,所以即使你這么設(shè)置了還是有一點(diǎn)延時(shí)的,不過(guò)比單線(xiàn)肯定是要快的多注意,生成的FPGA鏡像文件大小與FPGA型號(hào)有關(guān),與邏輯代碼的多少無(wú)關(guān),在同一塊FPGA中,你寫(xiě)一個(gè)流水燈的代碼和調(diào)用了幾個(gè)FFT,F(xiàn)IR數(shù)字濾波器IP核的信號(hào)處理代碼生成的FPGA鏡像文件的大小是相同的。

       

        至此,整個(gè)實(shí)驗(yàn)過(guò)程全部完畢。

      六、總結(jié)

        1、在生成bit文件的設(shè)置中勾選-g Binary選項(xiàng)可以生成bin文件

        2、在生成mcs文件之間提前對(duì)bit進(jìn)行速率與位寬的設(shè)置可以提高FPGA從Flash加載程序的速度

        3、設(shè)置Configuration Rate參數(shù)之前一定要閱讀QPSI Flash芯片手冊(cè)的電氣特性(Electrical Characteristics)一節(jié),找到支持的最高頻率。

      posted @ 2018-10-19 19:02  jgliu  閱讀(17650)  評(píng)論(0)    收藏  舉報(bào)
      主站蜘蛛池模板: 精品亚洲一区二区三区在线播放| 超碰人人模人人爽人人喊手机版 | 亚洲AV无码秘?蜜桃蘑菇| 国产成人精品亚洲日本语言| 日韩国产中文字幕精品| 欧美性做爰片免费视频看| 亚洲成人av综合一区| 色欲av亚洲一区无码少妇| 开心久久综合激情五月天| 最新的国产成人精品2020| 欧美牲交a欧美牲交aⅴ图片| 在线看国产精品自拍内射| 亚洲色在线V中文字幕| 吴江市| 国内精品视这里只有精品| 97精品国产91久久久久久久| 亚洲欧美色综合影院| 2020国产欧洲精品网站| 国产成AV人片久青草影院| 国产精品线在线精品国语| 高清国产一区二区无遮挡| 国产av无码国产av毛片| 亚洲综合精品第一页| 国产精品污双胞胎在线观看| 亚洲av无码牛牛影视在线二区| 99久久久国产精品免费无卡顿| 亚洲乱妇熟女爽到高潮的片| 日本一区二区不卡精品| 中文字幕有码高清日韩| 男女啪祼交视频| 久久99日韩国产精品久久99| 国产喷水1区2区3区咪咪爱AV| 国产女人18毛片水真多1| 喀什市| 国产激情福利短视频在线| 国产99青青成人A在线| 亚洲精品日产AⅤ| 精品无人区一区二区三区在线 | 亚洲成av人片无码不卡播放器| 久久国产自拍一区二区三区| 久久久久久久久久久久中文字幕 |