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

[专门为网吧做的公告系统程序]
采用CPLD器件XC95288XL-7TQ144I芯片实现Flash读取控制设 https://www./ruanjian/xitong/1178.html
  • 软件大小:1.08MB
  • 更新时间:2020-08-162011-03-04 10:35
  • 软件语言:简体中文
  • 软件授权:免费软件
  • 软件厂商:威盘网
  • 软件类别:其它工具
软件官网:官方网站
应用平台:Win2K,WinXP,Win2003,Vista,Win7
软件评分:8.9
  • 软件介绍
  • 推荐软件
  • 软件截图
  • 网友评论
  • 下载地址
基本简介

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位的数据输出宽度。可以节约必然的资源,具有相称的机动性和实用性。

责任编辑:gt

查看更多+
网友评论
网名:(您的评论需要经过审核才能显示)
软件截图
下载地址网吧公告 1.6有问题? 报错 + 投诉 + 提问
小提示:根据您的网络,梅高美游戏娱乐网址_365美高美游戏大厅_4688com美高美集团下载助手已为您匹配到最快的下载点
高速下载器地址
迅雷高速下载
旋风高速下载
电信高速下载
网通高速下载
其他下载地址
湖北电信下载
湖北网通下载
广东电信下载
广东网通下载
浙江电信下载
浙江网通下载
北京电信下载
北京网通下载
江苏电信下载
江苏网通下载
该款软件由用户上传。如有异议,请联系用户后,书面通知本站,我们会在24小时内做出处理。

热门软件

热门关键词

评论回复(您的评论需要经过审核才能显示)X

请简要描述您遇到的错误,我们将尽快予以修正。