找回密码
 注册
关于网站域名变更的通知
查看: 140|回复: 1
打印 上一主题 下一主题

使用LeonardoSpectrum综合Xilinx FPGA的VHDL程序

[复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 2020-3-18 15:56 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

EDA365欢迎您登录!

您需要 登录 才可以下载或查看,没有帐号?注册

x
摘要:本文总结了使用的LeonardoSpectrum综合的Xilinx FPGA的VHDL程序应用,以及在VHDL中使用不同类型的RAM的方法。" I$ w* t% F, D+ w- i+ ^
关键词:的LeonardoSpectrum; FPGA; VHDL
8 D+ X+ H, P2 o. J( u: B' C的LeonardoSpectrum是mentor Graphics公司公司设计的功能强大的EPLD / FPGA / ASIC LeonardoSpectrum支持VHDL,Verilog,EDIF的综合,优化和定时分析,可以在Windows 98/2000 / NT / XP和HP ,SUN的UNIX平台上运行。LeonardoSpectrum 0 O: p) W9 d# t
通过LeonardoSpectrum对于Xilinx公司的EPLD / FPGA支持尤其完善,可以使用HDL的设计在效率和功能上可以和原理图。的设计相当。这里总结了使用LeonardoSpectrum过程一些有用的设计方法。
4 j, I$ J$ D7 ^. V+ ]

图1全局时钟使用的地图结果

图2延迟锁相环使用map结果

图3块状RAM的map结果

图4分布式RAM的地图结果

的属性使用7 d5 k, X/ E% K- s- j
在的LeonardoSpectrum中,可以在程序中对信号赋予属性来对综合结果进行控制。在使用的LeonardoSpectrum综合时,除了的LeonardoSpectrum提供的属性外,可以把赛灵思原理图设计中的某些元件作为属性来赋予LeonardoSpectrum所提供的属性可以参考使用手册。
* ]. r) e& ~! X; S% P; z, H% B4 R如果使用LeonardoSpectrum来综合,建议示例库,可以使用更多的功能支持,此处介绍的程序都) }! j3 P' c( u5 b
…… bufg的  `1 }- I  l( G. L7 t/ N6 _0 S
架构rtl IS
  T1 |! I, ?& x. }% f7 zSIGNAL clk:td_ LOGIC ; 需要使用示例库。下面是对程序中一个信号通过指定bufg的属性而定义该信号为称为时钟的例子。$ ^7 q' t( ?0 {- |2 e" O$ m
clk的属性buffer_sig:信号为“ bufg”;
$ J& t9 H: d$ W+ N! [开始  O/ A3 m- d! m" [. K+ M- k
clk <= clkin; / B2 |- A9 D  ]6 p
clkout <= clk;
0 m0 F* w6 p, s3 h' U! |! wprocess(clk)' ~" U% L9 U. ^1 }7 f' C6 y- `. q7 i8 u
开始于
  E$ k2 J+ M  Iif(clk'event and clk ='1'),然后& l# `* @" ]/ Z; `, K( p
if结束;; S0 J1 T0 X3 X* w1 H
结束过程 $ s0 |% R3 Q' A- _/ R* D1 ~
END rtl; : k0 R2 s" C/ i  ?; v  g+ s5 u
这个程序替代的芯片是Xilinx的spartanII系列XC2S50-5QP208,经LeonardoSpectrum综合后,用Xilinx ISE5.1进行映射后的结果显示1处,可以看到使用了1个二进制时钟。
% r2 g* @  r' C) A元件引用
+ W. j; t% E1 i: Q: g$ d* I! k在Xilinx的FPGA / EPLD的原理图设计中需要用到元件库,元件库中包含一些特殊功能的元件,例如,延迟锁相环(DLL),串行时钟BUF,边界扫描电路,数字时钟管理器(DCM),内置SRAM等。提供的范例库中的程序包设计人员可以在VHDL程序中直接引用原理图库中所包含的元件。引用元件时,先调用范例库,对要引用的元件按照原理图库中的描述进行声明。元件时可以只使用其中一部分参数,不必对元件所有的参数进行映射。7 ]3 n7 C; Y# F; a
下面是引用的Xilinx FPGA的的延迟锁相环〔DLL〕的例子。
- t% N2 ]4 E" l" m............
' A1 J4 s. \4 g- o架构的RTL pll IS SIGNK
7 t4 O$ i. G9 Z+ A$ s( j% Dclk:ST d_logic;
1 }% Q( I: k* _组件clkdll-锁相环2 G/ X" R- h: W4 N
端口(clkin,clkfb,rst:std_logic中; clk0,clk90,clk180,clk270,clkdv,locked:out std_logic); ; N9 a4 l6 F0 q+ C
终端组件 % l# B/ ^% u/ a6 _: _
开始1 y6 k+ P2 D+ v  d
CLK1:clkdll端口映射(clkin => clkin,clkfb => clk,rst =>'0',clk0 => clk,clk90 => clkout);
- h. d" g' t0 A  a8 G) x6 ?0 s7 |处理(clk)
/ T5 k2 ^9 p) x3 _- w开始
, l# A( w" {5 C3 @* hif(clk'event and clk ='1')然后3 C' o5 I# H  W6 [% t3 ^
data_out <= data_in; " U' E0 G0 ?4 f7 j+ m, d% X% ^
万一; : l( u4 e1 Y1 C$ j5 ]. o
结束过程 0 h3 O: ^$ B: p9 [/ L
END rtl; & Q& Z& ]2 n2 N4 u0 ^
这个程序也可以选择Xilinx的XC2S50-5QP208,经LeonardoSpectrum综合后,用Xilinx ISE5.1进行映射后的结果如图2所示,可以看到使用了一个DLL。

RAM的综合7 h$ ?( o# X0 f% V! s8 t
RAM设计是Xilinx FPGA的一个特色,按照在芯片内的分布情况可以分为分布式RAM和块状RAM,分布式RAM分布在每个LC中,可以将一个LC作为16×1的同步RAM使用,也可以将两个LC联合起来作为16×2、32×1的同步RAM或者16×1的双口RAM使用,块状RAM是专用的分布FPGA边缘的RAM块。RAM使用时又可以作为ROM,单口RAM、双口RAM等。如果是原理图设计,可以在选择元件时选择不同的元件来选择不同类型的RAM,但是对于用描述语言来进行RAM设计时,就需要综合工具的支持,不同的综合工具,对相同的语句,可能就综合成不同类型的RAM。LeonardoSpectrum对VHDL的支持达到相当的高度,除了提供属性的方法来使用分布式RAM和块状RAM外,还可以在设计时使用不同的描述语句来产生分布式RAM和块状RAM。下面是一个综合成块状RAM的例子。. u" R; ~3 K$ ^& Q  Q" p
......
+ \* h7 a1 D7 {, I- A8 U; |ARCHITECTURE rtl of blockram IS0 j; X4 i3 k' p
TYPE RAM IS ARRAY ( 0 TO 127 ) OF STD_LOGIC_VECTOR( 7 DOWNTO 0 );8 Q0 [+ B! {2 [$ w8 }
SIGNAL testram :ram;: H& F+ E1 ]6 V7 P! O! ]
SIGNAL cc1,cc2 :std_logic_vector(6 downto 0);$ @7 y9 j' T$ ~0 g3 X
SIGNAL addr1,addr2 :integer range 0 to 127;: |; K* b+ c4 F4 l1 _9 ?8 G
BEGIN
  h0 [5 B9 f5 Y......- V% q0 h4 N3 w% t& r2 k$ O6 A, d. Q8 n
process(clkout) --从RAM中读出数据4 d3 O5 \$ p, k! U
begin- O4 b$ B% S% D" s
if(clkout'event and clkout='1') then
4 i  g: x6 Z9 B7 P0 f. U4 t7 udata_out<=testram(addr2);
$ N8 {# T) O! t5 V( a% [0 yend if;+ a( ?1 x: M! I( G% `
end process;+ M  w5 w3 C* H. Z; U2 _
END rtl;$ g4 f+ h3 \5 V1 ]4 O
该程序也选用Xilinx的XC2S50-5QP208,经LeonardoSpectrum综合后,用Xilinx ISE5.1进行map后的结果如图3所示,可以看到生成了块状RAM。
7 \, i! ^5 V6 }下面程序是综合成分布式RAM的例子。- u: o) E+ B+ z3 R: [! J
......
$ S; I# M" E/ M: u9 \4 S/ L; p# @ARCHITECTURE rtl of disram IS' C$ k" |9 p2 A! {. K% T$ `" ^
TYPE RAM IS ARRAY ( 0 TO 127 ) OF STD_LOGIC_VECTOR( 7 DOWNTO 0 );! `5 @- O  L$ Y" D2 C
SIGNAL testram :ram;7 A( I! q0 L0 L* G1 O: ?
SIGNAL cc1,cc2 :std_logic_ vector(6 downto 0);8 J" K$ W/ ^6 u% E( w
SIGNAL addr1,addr2 :integer range 0 to 127;
6 v5 p* J- l+ N  q# `BEGIN
5 a4 p8 F) F$ C# h3 [......
$ l5 A# B) M9 @process(clkout) --从RAM中读出数据8 B% R6 }4 J& E- U
begin if(clkout'event and clkout='1') then" Y; c. r5 {( x3 T: k9 O
if(ramsel='1') then data_out<=testram(addr2); end if; end if;+ ?# z* V) G5 Z  U' q' _, R
end process;
% S9 P. t9 v. Z( VEND rtl;# t! z8 m4 `2 X9 X1 v
替代XC2S50-5QP208,经LeonardoSpectrum综合后,用Xilinx ISE5.1进行地图后的结果如图4所示,可以看到生成了双重双口RAM。' i( Z. E: i9 i7 N2 B$ g% [
比较上面的两段程序,可以看到它们的区别就就在于生成分布式RAM的程序中,数据输出时有一个selram信号,则,如果直接用时钟指示RAM中的数据,就综合成块状RAM;如果是用带使能的方式输出RAM中的数据,就综合成分布式RAM。

结语9 y) s  F8 t$ R6 \# h
综上所述,LeonardoSpectrum对于用VHDL编写的Xilinx FPGA的程序支持是非常到位的,可以充分利用Xilinx的优势,用语言设计出与原理图设计相当功能的程序。
5 q" q/ p; @- R% B

. ^' }$ e, Q+ ~/ E/ L

该用户从未签到

2#
发表于 2020-3-18 16:03 | 只看该作者
在使用的LeonardoSpectrum综合时,除了的LeonardoSpectrum提供的属性外,可以把赛灵思原理图设计中的某些元件作为属性来赋予LeonardoSpectrum所提供的属性
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

推荐内容上一条 /1 下一条

EDA365公众号

关于我们|手机版|EDA365电子论坛网 ( 粤ICP备18020198号-1 )

GMT+8, 2025-8-20 09:16 , Processed in 0.109375 second(s), 23 queries , Gzip On.

深圳市墨知创新科技有限公司

地址:深圳市南山区科技生态园2栋A座805 电话:19926409050

快速回复 返回顶部 返回列表