一種高檔FPGA可重構(gòu)配置方法
為簡化 CPLD的控制時序,便于對 FPGA進(jìn)行自動配置,將 Flash的存儲空間按順序劃分為 6個塊,分別存儲 6個配置數(shù)據(jù)。每個塊包含 20個扇區(qū),1.25MBytes存儲空間。本文引用地址:http://m.butianyuan.cn/article/191951.htm
CPLD控制部分軟件設(shè)計與實現(xiàn)
3.1 EPM7064A的 Verilog HDL描述
EPM7064A是整個配置電路的核心,它完成 Flash配置數(shù)據(jù)的加載和配置時序的產(chǎn)生。按照由上至下的進(jìn)行設(shè)計,將其分成三個主要功能模塊,即數(shù)據(jù)加載過程中與 PC機(jī)通訊的 UART模塊、寫 Flash時序產(chǎn)生模塊和配置時序產(chǎn)生模塊,分別由 Verilog HDL硬件描述語言實現(xiàn)。
數(shù)據(jù)加載過程中,EPM7064A的 UART模塊與 PC機(jī)通訊,同時產(chǎn)生 Flash編程控制字,將 PC機(jī)送來的數(shù)據(jù)寫入指定的塊。其主要工作過程是串口模塊接收到一個字節(jié)數(shù)據(jù)后,其 DATARDY有效,觸發(fā) Flash寫模塊先將三個控制字?jǐn)?shù)據(jù) AA、55、A0寫入 Flash,然后將接收到的數(shù)據(jù)寫入 Flash。寫 Flash仿真時序圖如圖 4所示。
數(shù)據(jù)讀取和配置時序模塊的主要程序代碼如下:
module conf( clk20m, //設(shè)時鐘頻率20Mhz
…… ) //端口列表
…… //輸入輸出口定義
…… //寄存器定義
…… //配置模式參數(shù)定義
…… //工作狀態(tài)參數(shù)定義
always@(posedge clk)
begin
if (conf_start==1) //配置啟動脈沖啟動一次配置
nCONFIG=0;
if(nCONFIG==0)
count1=count1+1;
if (count1=50) //進(jìn)入復(fù)位狀態(tài),復(fù)位時間大于2us
state=reset;
if(count1>50)
nCONFIG=1;
if(nSTATUS==1)
state=configure; //進(jìn)入配置狀態(tài)
if(CONF_DONE)
begin state=init; count2=count2+1;end //進(jìn)入初始化狀態(tài)
if(INIT_DONE)
begin state=user_mode;count2=0;end //進(jìn)入用戶狀態(tài)
end
always@(posedge clk)
begin
case(state)
reset: begin
評論