電子發燒友網 > 可編程邏輯 > 正文

采用VHDL語言在CPLD內部編程實現Flash讀取控制設計

2020年07月15日 17:47 ? 次閱讀

1、概述

本設計已實用于國家863計劃“可擴展到T比特的高性能IPv4/v6路由器基礎平臺及實驗系統”項目中。其主要功能是對主控部分的FPGA讀取Flash進行控制。

在本項目中,主控部分的FPGA在重啟時需要從Flash中下載初始化程序。當下載完成后,FPGA仍會根據需要從Flash相應地址讀取數據。這就要求在FPGA和Flash之間有一塊控制邏輯來控制對Flash的讀取。本設計就是完成的對這塊控制邏輯的具體實現。

本文用VHDL語言在CPLD內部編程將其實現。本文第2節給出用VHDL語言在CPLD內部編程實現Flash讀取的過程,第3節對全文進行概括總結。

2、實現

2.1 器件的選擇

我們選用Xilinx公司XC9500XL 3.3V ISP 系列XC95288XL-7TQ144I芯片。XC95288xl是一個3.3V的低電壓、高效的CPLD,在通信和計算機系統中的有廣泛的應用。它包含16個54V18個功能塊,提供了6400個可用的門電路,這些門電路的傳播延時為6ns.

對于Flash,項目中選擇了Intel公司的Intel StrataFlash系列的256-Mbit J3型Flash.其數據寬度可分別支持8位或者16位。

2.2 實現中的問題及解決方法

項目中選用的Flash的輸出為16位,而向FPGA輸出的數據為32位,因此產了數據寬度不匹配的問題,解決的方法有兩種:

第一 使用兩塊相同的Flash,分別將其輸出的數據送入FPGA接口的高16位和低16位;其缺點是需要增加一塊Flash,從而成本增加。

第二 采用降低讀取速度的方法,把從一塊Flash中連續兩次讀取的16位數據拼接起來,組成一組32位的數據后送入FPGA接口。

出于對成本和復雜度的考慮,在此設計中我們采取了第二種方法加以實現。

2.3 基本設計模塊圖

2.4 用VHDL進行實現(注:實體部分定義可分別參見模塊圖中的劃分)

Flash control 1

process(reset,gclk)

begin

if reset =”0“ then

count_reset 《=”0“;

elsif gclk”event and gclk =“1” then

count_reset 《= not(count(4) and count(3) and count(2));

end if;

end process;

process(count_reset,gclk)

begin

if count_reset =“0” then

count 《=(others =》“0”);

elsif gclk“event and gclk =”1“ then

count 《=count +1;

end if;

end process;

process(count_reset,reset,enable)

begin

if reset =”0“ then

F_CS 《=”1“;

F_OE 《=”1“;

F_WE 《=”1“;

elsif count_reset =”0“ then

F_CS 《= ”1“;

F_OE 《= ”1“;

F_WE 《= ”1“;

elsif enable”event and enable =“1” then

F_Abus 《= C_Abus;

F_CS 《= “0”;

F_OE 《= “0”;

F_WE 《= “1”;

C_Dbus 《= F_Dbus;

end if;

end process;

Flash control 2

d_count_rst 《= not(d_count(1) and (not d_count(0)) and empty);

sig_WD 《= not(d_count(1) and (not d_count(0)));

WR_DATA 《= sig_WD;

process(gclk,d_count)

begin

if reset =“0” then

d_count 《= “1”;

elsif F_CS = “1” then

d_count1 《= not d_count1 ;

if gclk“event and gclk =”1“ then

d_count2 《= d_count1;

d_count 《= d_count2;

end if;

end if;

end process;

process(reset,d_count,C_Dbus)

begin

if reset = ”0“ then

data_adder 《= (others =》”0“);

elsif d_count”event and d_count = “0” then

data_adder(31 downto 16) 《= C_Dbus;

elsif d_count“event and d_count = ”1“ then

data_adder(15 downto 0) 《= C_Dbus;

end if;

end process;

enable 《= enable1 and enable2;

process(reset,d_count,F_CS)

begin

if reset = ”0“ or F_CS = ”0“ then

enable1 《= ”1“;

enable2 《= ”1“;

elsif d_count”event then

if gclk“event and gclk =”1“ then

enable1 《= ”0“;

enable2 《= not enable1;

end if;

end if;

end process;

process(reset,F_CS)

begin

if reset = ”0“ then

address《= X”400000“;

elsif F_CS = ”1“ then

C_Abus 《= address;

address 《= adderss +1;

end if;

end process;

process(reset,F_CS)

begin

if reset = ”0“ then

address《= X”400000“;

data_adder 《=(others =》”0“);

elsif F_CS = ”1“;

address 《= adderss +1;

end if;

end process;

process(d_count2,F_CS)

begin

if F_CS = ”0“ then

enable1 《= ”1“;

enable 《= ”1“;

elsif d_count2 = ”00“ or d_count2 = ”01“ then

enable 《= ”0“;

end if;

end process;

process(gclk,sig_WD)

begin

if sig_WD = ”1“ then

Pulse_RW 《=”1“;

elsif gclk”event and gclk =“1” then

W_D1 《= sig_WD;

W_D2 《= W_D1;

if empty =“0” then

data_adder1 《= data_adder;

Pulse_RW 《= (W_D1 or (not W_D2));

end if;

end if;

end process;

(注:此程序在Xilinx公司的ISE6.2i環境下用VHDL編程實現,其仿真波形見下圖)

采用VHDL語言在CPLD內部編程實現Flash讀取控制設計

3、 結束語

在實際應用中,以此CPLD對Flash的讀取進行控制。仿真結果及最后的實際調試都表明該設計符合項目的要求。在程序中通過對讀取的記數控制,本設計可以在不增加Flash片數的情況下支持16/32/64位的數據輸出寬度。可以節約一定的成本,具有相當的靈活性和實用性。

責任編輯:gt

(注:此程序在Xilinx公司的ISE6.2i環境下用VHDL編程實現,其仿真波形見下圖)

圖2 Flash control 1仿真圖

點擊看大圖

圖3 Flash control 2仿真圖

3 、結束語

在實際應用中,以此CPLD對Flash的讀取進行控制。仿真結果及最后的實際調試都表明該設計符合項目的要求。在程序中通過對讀取的記數控制,本設計可以在不增加Flash片數的情況下支持16/32/64位的數據輸出寬度。可以節約一定的成本,具有相當的靈活性和實用性。

責任編輯:gt

下載發燒友APP

打造屬于您的人脈電子圈

關注電子發燒友微信

有趣有料的資訊及技術干貨

關注發燒友課堂

鎖定最新課程活動及技術直播

電子發燒友觀察

一線報道 · 深度觀察 · 最新資訊
收藏 人收藏
分享:

評論

相關推薦

Linux NOR FLASH驅動—Linux驅動實戰篇(九)

發燒友學院官方QQ群:548514676  (在學習過程中,有任何問題可在視頻右側問答框提出,或下方評論區提出
發燒友學院發表于 2016-12-23 00:00? 5708次閱讀
Linux NOR FLASH驅動—Linux驅動實戰篇(九)

基于CPLD芯片實現專用鍵盤芯片KB-CORE的...

在單片機應用系統中,存在多種形式的外部數據輸入接口界面,例如RS-232C串行通信、鍵盤輸入等。其中....
發表于 2020-07-15 17:58? 0次閱讀
基于CPLD芯片實現專用鍵盤芯片KB-CORE的...

基于CPLD器件和tcd1201d芯片實現CCD...

ccd(charge couple device)是一種電荷藕合式光電轉換器件。在物體位移測量系統中....
發表于 2020-07-15 17:36? 14次閱讀
基于CPLD器件和tcd1201d芯片實現CCD...

基于PLD器件EPM3256ATC144-10芯...

如圖1所示,每路SSPC取樣電阻上的電壓經過調理電路和低通濾波器以后,送到4通道A/D轉換器的一個模....
發表于 2020-07-15 17:20? 14次閱讀
基于PLD器件EPM3256ATC144-10芯...

基于Shannon Open-Channel的高...

以鍵值對(Key-Value,簡稱KV)作為數據的存儲方式,已經在很多場合得到了成功的應用。KV存儲....
發表于 2020-07-15 16:56? 9次閱讀
基于Shannon Open-Channel的高...

28335外部接口XINTF三個區域的片選信號是怎么使能的

大家好!       我在看28335的XINTF模塊的時候,對資料所說的Zone0,6,7有不同的片選信號...
發表于 2020-07-15 10:10? 17次閱讀
28335外部接口XINTF三個區域的片選信號是怎么使能的

TMS320F2808,程序燒進flash,選go main,CCS3.3報錯是怎么回事

編了一個很簡單的程序,程序編譯都是正確的,沒有任何錯誤和安全警告。 燒進flash中在線調試,燒寫成功之后,點擊go ...
發表于 2020-07-15 09:15? 7次閱讀
TMS320F2808,程序燒進flash,選go main,CCS3.3報錯是怎么回事

UniFlash安裝問題如何解決

因為需求不依賴工程的燒錄工具,最近在弄UniFlash下載,在官網上下載了UniFlash在線版結果一直卡在安裝中,又重新...
發表于 2020-07-15 06:56? 8次閱讀
UniFlash安裝問題如何解決

使用XC7K325T-FBG900,可以使用存儲體14和15中的引腳來配置為IO ?

我正在使用XC7K325T-FBG900作為我的電路板,N25Q128 SPI Flash用于配置。我可以使用存儲體14和15中的引腳...
發表于 2020-07-15 06:10? 2次閱讀
使用XC7K325T-FBG900,可以使用存儲體14和15中的引腳來配置為IO ?

基于FPGA和VHDL語言編程實現液晶屏信號發生...

液晶顯示已成為目前平板電視與計算機顯示終端的主流,液晶顯示器的研究設計、生產、檢驗等部門甚至消費者需....
發表于 2020-07-10 10:43? 72次閱讀
基于FPGA和VHDL語言編程實現液晶屏信號發生...

設計FPGA系統的三個基本原則是什么,了解一下

在這種方法中面積的復制可以換取速度的提高。支持的速度越高,就意味著可以實現更高的產品性能。一些注重產....
發表于 2020-07-10 09:51? 73次閱讀
設計FPGA系統的三個基本原則是什么,了解一下

28027能在ram中正確運行但是換成在flash中就為什么不能運行呢

為何28027能在ram中正確運行但是換成在flash中就為什么不能運行呢 /* // 系統時鐘采用外部晶體振蕩器 24MHZ 使能...
發表于 2020-07-08 14:46? 40次閱讀
28027能在ram中正確運行但是換成在flash中就為什么不能運行呢

兩片F2812級聯,無法擦除內部FLASH怎么辦

您好!     我有一個單板上用了兩片F2812芯片,JTAG以菊花鏈的形式級聯起來,程序在兩個DSP的RA...
發表于 2020-07-08 11:49? 29次閱讀
兩片F2812級聯,無法擦除內部FLASH怎么辦

兆易創新推出國內首款2Gb SPI NOR Fl...

中國北京(2020 年7月3日) — 業界領先的半導體器件供應商兆易創新 GigaDevice(股票....
發表于 2020-07-03 16:24? 125次閱讀
兆易創新推出國內首款2Gb SPI NOR Fl...

一個基于Flash的掉電數據存取方案設計kFla...

kFlashFile 是一個基于 NOR Flash 的輕量級文件數據存儲方案,用于需要斷電數據保存....
發表于 2020-07-02 08:47? 92次閱讀
一個基于Flash的掉電數據存取方案設計kFla...

基于max7000芯片和可編程邏輯器件實現時間數...

時間數字轉換(tdc)技術原本是實驗核物理中的課題,隨著科學技術的不斷發展,精密時間測量數字化技術在....
發表于 2020-06-26 09:45? 118次閱讀
基于max7000芯片和可編程邏輯器件實現時間數...

基于復雜可編程邏輯器件和VHDL語言實現半整數分...

在數字系統設計中,根據不同的設計需要,經常會遇到偶數分頻、奇數分頻、半整數分頻等,有的還要求等占空比....
發表于 2020-06-26 09:36? 66次閱讀
基于復雜可編程邏輯器件和VHDL語言實現半整數分...

基于CPLD器件實現雙主設備PCI總線仲裁器的設...

PCI(Peripheral Component Interconnect)總線是現今最為流行的工業....
發表于 2020-06-26 09:30? 136次閱讀
基于CPLD器件實現雙主設備PCI總線仲裁器的設...

基于CPLD芯片和VerilogHDL語言實現位...

異步串行通信是現代電子系統中最常用的數據信息傳輸方式之一,一般情況下,為了能夠正確地對異步串行數據進....
發表于 2020-06-26 09:29? 79次閱讀
基于CPLD芯片和VerilogHDL語言實現位...

大學生如何學習FPGA初學者怎么學FPGA

無論是從自身的發展,還是從FPGA所擁有的巨大市場來講,學習FPGA都是一個不錯的選擇,對大家來說FPGA技術...
發表于 2020-06-23 15:12? 296次閱讀
大學生如何學習FPGA初學者怎么學FPGA

FPGA有哪些特點和優勢 FPGA與MCU有什么區別

從1985年第一顆FPGA誕生至今,FPGA已經歷了將近20多個年頭,從當初的幾百個門電路到現在的幾百萬門、幾千萬門...
發表于 2020-06-23 15:04? 305次閱讀
FPGA有哪些特點和優勢 FPGA與MCU有什么區別

FPGA是怎么起源的 FPGA是怎樣產生

FPGA的很有發展前景,那你知道FPGA是怎樣產生的嗎?20世紀60年代,晶體管技術迅速的發展,數字集成電路以雙極...
發表于 2020-06-23 13:54? 253次閱讀
FPGA是怎么起源的 FPGA是怎樣產生

FPGA有哪些應用及發展前景如何

FPGA作為一種高新的技術,已經逐漸普及到了各行各業,無論是消費類、通信類、電子行業,它的身影都無處不在。從19...
發表于 2020-06-23 13:51? 254次閱讀
FPGA有哪些應用及發展前景如何

高性能SPI Nor Flash可提供更靈活的設...

武漢新芯一家領先的非易失性存儲供應商,宣布其采用50nm Floating Gate工藝SPI No....
發表于 2020-06-19 16:32? 34次閱讀
高性能SPI Nor Flash可提供更靈活的設...

Adobe正式公布:今年12月31日終止支持Fl...

三年前,Adobe宣布計劃在2020年底之前停止對Flash Player的支持。Adobe現已正式....
發表于 2020-06-18 17:53? 674次閱讀
Adobe正式公布:今年12月31日終止支持Fl...

使用Verilog和VHDL描述圖像處理算法的功...

COVID-19的大流行迫使世界各地的大學遠程上課。Marco Winzker說,大多數講座都是以視....
發表于 2020-06-18 09:43? 361次閱讀
使用Verilog和VHDL描述圖像處理算法的功...

可編程邏輯器材如何選購

 在運用可編程邏輯器材時,能夠從以下幾個方面進行挑選。
發表于 2020-06-18 08:52? 99次閱讀
可編程邏輯器材如何選購

Verilog HDL和VHDL的區別

Verilog HDL是一種硬件描述語言,以文本形式來描述數字系統硬件的結構和行為的語言,用它可以表....
發表于 2020-06-17 16:13? 307次閱讀
Verilog HDL和VHDL的區別

由于芯片商在出新的過程中有安全性的考量,使芯片性...

關于這個UID常有人有些疑問,有幾個問題在這里稍微總結下: 1、有無問題。上面說了絕大部分ST....
發表于 2020-06-04 14:47? 455次閱讀
由于芯片商在出新的過程中有安全性的考量,使芯片性...

通過利用FM18L08鐵電存儲器實現實時數據采集...

在一些需要下位機單獨工作的特殊場合(如民用“黑匣子”裝置和軍用彈載測試設備等),其數據的高速存儲和掉....
發表于 2020-05-31 15:43? 127次閱讀
通過利用FM18L08鐵電存儲器實現實時數據采集...

基于DSP與FLASH的硬件接口電路實現數字錄音...

閃速存儲器FLASH是可快速擦寫的非易失性存儲器,自Intel公司于1988年推出FLASH Mem....
發表于 2020-05-31 10:31? 134次閱讀
基于DSP與FLASH的硬件接口電路實現數字錄音...

基于CPLD控制器和AD9283芯片實現車距報警...

為減少汽車碰撞事故的發生,汽車碰撞技術在近年發展很快。汽車避撞技術首先需要解決的問題是汽車之間的安全....
發表于 2020-05-31 09:15? 211次閱讀
基于CPLD控制器和AD9283芯片實現車距報警...

一種基于ARM和CPLD的溫度控制器的設計方案

隨著計算機技術的飛速發展,在日常生活和生產中,人們要求更精確測量和控制溫度等模擬物理量,不僅滿足工業....
發表于 2020-05-25 10:46? 217次閱讀
一種基于ARM和CPLD的溫度控制器的設計方案

Linux的flash怎么安裝

使用火狐看視頻時,有些網站需要使用flash播放器,這時就需要在Linux上安裝flash了,該如何....
發表于 2020-05-22 09:03? 75次閱讀
Linux的flash怎么安裝

SP300VAC600W/1000W1500W單...

該系列交流電源為單組輸出的高功率密度可編程交流電源, 采用高速DSP+CPLD控制, 高頻PWM功率....
發表于 2020-05-20 10:06? 94次閱讀
SP300VAC600W/1000W1500W單...

基于TMS320VC5409芯片實現外掛Flas...

TI公司的DSP芯片出廠時,在片內ROM中固化有引導裝載程序Bootloader,其主要功能就是將外....
發表于 2020-05-19 10:15? 187次閱讀
基于TMS320VC5409芯片實現外掛Flas...

基于CPLD技術和PCI總線技術實現數據接收和存...

目前衛星技術已廣泛應用于國民生產的各個方面。通訊衛星,氣象衛星以及遙感衛星,科學探測衛星等與人們的生....
發表于 2020-05-14 10:02? 146次閱讀
基于CPLD技術和PCI總線技術實現數據接收和存...

51單片機與CPLD的結合可讓系統更加高效化

選擇51 單片機學習入門容易,倒不是說51 系列單片機比別的型號簡單,其實在8 位單片機家族中,51....
發表于 2020-05-07 11:13? 367次閱讀
51單片機與CPLD的結合可讓系統更加高效化

FPGA與CPLD到底有什么區別

FPGA(Field Programmable Gates Array 現場可編程門陣列,內部結構為....
發表于 2020-05-05 15:03? 733次閱讀
FPGA與CPLD到底有什么區別

解析CPLD在信號濾波和抗干擾中的應用

單片機應用系統的輸入信號常含有種種噪聲和干擾,它們來自被測信號源、傳感器、外界干擾源等。
發表于 2020-05-04 09:26? 208次閱讀
解析CPLD在信號濾波和抗干擾中的應用

基于陀螺儀的姿態角存儲測試實現方案的研究

研究存儲測試技術之后,設計了存儲測試系統。體積微小和測量時不需要引線即不需要對外界的電磁輻射是他的最....
發表于 2020-05-03 11:01? 208次閱讀
基于陀螺儀的姿態角存儲測試實現方案的研究

使用CPLD和單片機結合實現無線傳感器網絡節點控...

自單片機引入我國以來,相關產品的普及促使單片機的應用設計日益廣泛。傳統的單片機控制系統由單片機以及外....
發表于 2020-05-03 10:40? 348次閱讀
使用CPLD和單片機結合實現無線傳感器網絡節點控...

簡單分析基于CPLD的數字電路設計原理

可編程邏輯器件PLD(Programmable Logic De-vice)是一種數字電路,它可以由....
發表于 2020-04-28 11:18? 318次閱讀
簡單分析基于CPLD的數字電路設計原理

基于CPLD器件XC9572實現巡線機器人運動控...

就巡線機器人的運動控制系統中的保護及定位系統而言,其本質是根據傳感器信號給出相應的電機控制信號。也就....
發表于 2020-04-25 17:51? 202次閱讀
基于CPLD器件XC9572實現巡線機器人運動控...

采用5管單元的SRAM結構實現CPLD可編程電路...

顯然,設計基于SRAM編程技術的CPLD可以很好解決上述應用問題。CPLD的設計和實現的關鍵問題是核....
發表于 2020-04-25 10:21? 230次閱讀
采用5管單元的SRAM結構實現CPLD可編程電路...

基于EDA技術和VHDL語言編程實現智能交通控制...

十字路口設計兩組交通燈分別控制東西和南北兩個方向的交通。如圖1所示,當東西方向的紅燈亮時,南北方向對....
發表于 2020-04-24 10:04? 269次閱讀
基于EDA技術和VHDL語言編程實現智能交通控制...

基于Neuron芯片和CPLD器件實現在系統編程...

在系統編程ISP(In System Programming)是指在用戶設計的目標系統或印刷電路板上....
發表于 2020-04-20 09:29? 241次閱讀
基于Neuron芯片和CPLD器件實現在系統編程...

利用半拍錯位同步法消除異步電路的亞穩態

當今的數字系統往往是圍繞CPLD/ FPGA 進行設計的, 首選的方案是采用同步時序電路設計 , 也....
發表于 2020-04-18 12:59? 324次閱讀
利用半拍錯位同步法消除異步電路的亞穩態

采用TMS320VC5402和UDA1341TS...

列車運行監控記錄裝置在鐵路的安全運輸過程中發揮了巨大的作用,但不足的是沒有語音記錄功能。為了解決這個....
發表于 2020-04-18 09:43? 176次閱讀
采用TMS320VC5402和UDA1341TS...

采用單片機和CPLD器件實現仿人手臂形假肢控制系...

假肢是人體缺損肢體的替代物,用以彌補缺損肢體的形狀和功能。本文針對失去整個手臂的情況,設計出一種仿人....
發表于 2020-04-15 09:36? 225次閱讀
采用單片機和CPLD器件實現仿人手臂形假肢控制系...
亚洲 视频 在线 国产 精品