EDN China > 设计实例 > 可编程器件 > FPGA > 正文
? 2016博客大赛-不限主题,寻找电子导师,大奖升级??

(多图) 基于FPGA的数字存储示波器对外围芯片的控制设计

/?? 2014年09月05日 ?? 收藏0

接着,使用VHDL 在其结构体部分编写LTC2620 时序,需要设计两个进程来完成,分别是PROCESS( clk5m,clr_n) 进程和PROCESS( load_clk,clr_n,DAT_DATA_A) 进程。

首先定义数据格式,分成三部分,COMMAND( C3 - C0) 、ADDRESS ( A3 - A0) 和DATA ( D11 -D0) ,一共为20 位,要分三个字节发送,即24 位。数据格式定义的VHDL 代码:

CONSTANT CNT_COMMAMD_DATA : STD_LOGIC_VECTOR( 3 DOWNTO 0) : = "0011" ;

/ /COMMAND( C3 - C0)

SIGNAL ADDRESS_DATA : STD_LOGIC_VECTOR( 3 DOWNTO 0) ;

/ / ADDRESS( A3 - A0)

SIGNAL DAT_DATA: STD_LOGIC_VECTOR( 11 DOWNTO 0) ;

/ / DATA( D11 - D0)

根据图6,对时序SCK、SDI、CS /LD 进行定义:

SIGNAL r_n_CS_LD,r_SCK,r_SDI : STD_LOGIC;

内部时钟定义:

SIGNAL r_load, load_clk, load_en : STD_LOGIC;

再设定三个进程来模拟图7 的SCK、SDI、CS /LD 三个时序图。

1) 进程1 主要是通过内部时钟生成SCK 时序

代码为:

PROCESS( clk5m, clr_n)

VARIABLE tp : INTEGER RANGE 0 TO 25;

BEGIN

IF clr_n = '0' THEN

tp: = 0; load_clk < = '0';

ELSIF clk5m'EVENT AND clk5m = '1' THEN

IF tp < 25 THEN

tp: = tp + 1; load_clk < = '1';

ELSE

tp: = 0; load_clk < = '0';

END IF;

END IF;

END PROCESS;

2) 进程2 主要是设置LTC2620 的8 个输出引脚VoutA - VoutH 与ADDRESS ( A3 - A0) 之间的对应关系,ADDRESS,如表1 所示。

表1 ADDRESS分配表

使用CASE 语句完成,代码如下:

CASE state IS

WHEN 1 = > DAT_DATA < = DAT_DATA_B; ADDRESS_DATA < = "0001" ;

WHEN 2 = > DAT_DATA < = DAT_DATA_C; ADDRESS_DATA < = "0010" ;

WHEN 3 = > DAT_DATA < = DAT_DATA_D; ADDRESS_DATA < = " 0011" ; WHEN 4 = > DAT_DATA <

= DAT_DATA_E; ADDRESS_DATA < = "0100" ; WHEN 5 = > DAT_DATA < = DAT_DATA_F; ADDRESS_DATA <

= "0101" ; WHEN 6 = > DAT_DATA < = DAT_DATA_G; ADDRESS_DATA < = " 0110" ; WHEN 7 = > DAT_DATA

< = DAT_DATA_H; ADDRESS_DATA < = " 0111" ; WHEN OTHERS = > DAT_DATA < = DAT_DATA_B; ADDRESS_

DATA < = "0001" ; load_en < = '0';

END CASE;

3) 进程3 主要是设置DATA ( D11 - D0) 的数据输出,每次需发送24 位数据,其中4 位无用上,给置0 处理,代码如下:

IF r_load = '0' THEN

data( 23 DOWNTO 20) : = CNT_COMMAMD_DATA;

data( 19 DOWNTO 16) : = ADDRESS_DATA;

data( 15 DOWNTO 4 ) : = DAT_DATA;

data( 3 downto 0) : = "0000" ;

……/ /省略;

end IF;

3 结语

本文详细介绍了使用VHDL 硬件描述语言,程序编写过程,对两个功能模块进行基于FPGA 的嵌入式系统程序开发。实现了ARM 接口通信控制模块、芯片驱动模块的程序设计,有效地解决了芯片间之间的通信与驱动的问题,以FPGA 为核心,有效地实现芯片间的相互协作,为数字存储示波器数据采样提供重要的可靠性。

【分页导航】


上一页1234下一页
?? ?? ??


打开微信“扫一扫”,打开网页后点击屏幕右上角分享按钮

1.扫描左侧二维码
2.点击右上角的分享按钮
3.选择分享给朋友
?? ??

数字存储示波器? FPGA? 超高速集成电路硬件描述语言?

相关文章

我来评论
美国的游客
美国的游客 ??? (您将以游客身份发表,请登录 | 注册)
?
有问题请反馈