首页 > 技术 > 内容

采用CPLD器件XC95288XL-7TQ144I芯片实现Flash读取控制设计

时间:2026-01-23  作者:Diven  阅读:0

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编程实现,其仿真波形见下图)

3 结束语

在实际应用中,以此CPLD对Flash的读取进行控制。仿真结果及最后的实际调试都表明该设计符合项目的要求。在程序中通过对读取的记数控制,本设计可以在不增加Flash片数的情况下支持16/32/64位的数据输出宽度。可以节约一定的成本,具有相当的灵活性和实用性。

猜您喜欢


自发光疏散标识是现代建筑安全设计中不可少的一部分,其主要功能是指引人们在紧急情况下迅速、安全地疏散。不同类型的自发光疏散标识在材料、发光原理和应用场景上存在显著...
2010-12-06 00:00:00
据麦姆斯咨询报道,总部位于美国硅谷的汽车雷达初创公司傲图科技(Altos Radar)近日宣布完成350万美元种子轮融资,以加快4D成像雷达在驾驶辅助和自动驾驶...
2023-08-17 09:34:00
贴片电阻盘子上的刻度标识了电阻值,认识这些刻度对于快速找到所需电阻很重要。一般来说,刻度采用数字和字母组合的方式表示,遵循一定的规律。最常见的标识方法是三位数代...
2024-11-29 10:25:55
贴片电阻上的「1R1」标识表示其阻值为1.1欧姆。字母「R」在这里代表小数点。这种标识方法常见于贴片元件,是为了在有限的空间内清晰地标注数值。 如果您看到类似的...
2025-04-14 15:02:12
还在为繁琐的贴片电阻计算而烦恼吗?现在,一款便捷的贴片电阻计算器手机版来帮您!完全免费下载,让您随时随地轻松计算电阻值。这款计算器操作简单,界面直观,即使您不是...
2025-04-14 15:02:34
粘尘垫是应用于各种场所的清洁工具,主要用于有效去除鞋底或轮胎上的灰尘和杂物。根据不同的使用需求,粘尘垫可以分为以下几类。按材质分类,粘尘垫主要有PE(聚乙烯)和...
2008-11-28 00:00:00
0603贴片电阻是电子电路中常用的元件,其体积小巧,性能稳定。本阻值表涵盖了常用0603贴片电阻的阻值范围,方便工程师和电子爱好者快速查找所需阻值。阻值范围从1...
2024-11-26 11:29:47
称量纸是常用的实验室工具,在科学实验和工业应用中是重要的配件。称量纸能够有效地保护天平和测量容器,避免直接接触样品,从而减少污染和误差。称量纸的使用可以确保样品...
2015-02-14 00:00:00
捡拾器是方便实用的工具,应用于家庭、户外和清洁工作中。其规格尺寸因品牌和型号而异,但通常具有一些共同特点。捡拾器的长度在70到100厘米之间,便于用户在不弯腰的...
2016-11-03 00:00:00
工业接线端子是应用于电气连接的元件,主要用于将电缆与电气设备安全、可靠地连接在一起。通常由高品质导电材料制成,具有良好的导电性和耐腐蚀性,能够在各种恶劣环境下稳...
2020-03-26 00:00:00