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