5
CY3125
经
对于UNIX CPLD开发工具
特点
VHDL ( IEEE 1076和1164 )和Verilog ( IEEE 1364 )
高级语言的编译器具有以下
产品特点:
- 设计是在多个便携式设备
和/或EDA环境
- 方便使用的行业标准仿真
和板级和系统级综合工具
设计
- 支持功能和促进图书馆
模块化的设计方法
IEEE标准1076和1164 VHDL综合
支持:
- 枚举类型
- 操作符重载
- 对于...生成报表
- 整数
IEEE 1364标准的Verilog综合支持:
- 减少和条件运算符
- 阻塞和非阻塞赋值过程
- While循环
- 整数
几种设计输入方法支持高层次,
低层次的设计说明:
—
行为VHDL和Verilog ( IF ... THEN ... ELSE ;
CASE ... )
- 布尔
- 结构Verilog和VHDL
- 设计可以包含多个输入方法(但
只有一种HDL语言)在一个单一的设计。
UltraGen 综合和适配技术:
- 推导出的“模块”,如加法器,比较器等,
从行为的描述,并将它们替换
电路预先优化为目标设备。
- 用户可选择的速度和/或面积优化上的
块逐块的基础
- 合成和适合─之间的完美沟通
婷
- 自动选择最佳的触发型的
(D型/ T型)
- 自动引脚分配
支持以下赛普拉斯可编程
逻辑器件:
- PSI (可编程串行接口 )
- Delta39K CPLD实现
- Quantum38K CPLD实现
- Ultra37000 CPLD实现
— F
LASH
370i CPLD实现
- MAX340 CPLD实现
赛普拉斯半导体公司
文件编号: 38-03046修订版**
汇编
UltraGen
TM
合成
和
配件
- 行业标准的可编程逻辑器件( 16V8 , 20V8 , 22V10 )
VHDL和Verilog的时序模型输出与使用
第三方模拟器
静态时序报告:
- 为打破任何路径的时序信息
下来的不同步骤的路径
架构资源管理器和动态时序分析
PSI , Delta39K和Quantum38K设备:
- 图形的究竟是如何设计的代表性
将您的特定目标设备上实现
- 变焦从设备级下调至宏蜂窝
水平
- 确定对任何路径的定时,并查看该路径
在芯片上的图形表示
适用于Sun Solaris 工作站支持
在线文档和帮助
功能说明
设计
条目
VHDL
Verilog的
状态机
VERFICA TION
程序设计
网络文件
定时
模拟器
VHDL , Verilog的
&Third党
仿真模型
图1 。
经
VHDL设计流程
经
是国家的最先进的HDL编译器与设计
赛普拉斯的复杂可编程逻辑器件(CPLD ) 。
经
利用IEEE 1164分之1076 VHDL和IEEE的一个子集
1364的Verilog作为硬件描述语言( HDL )的
设计输入。然后,合成和优化输入
设计,并输出所需一个JEDEC或Intel hex文件
PLD或CPLD (见
图1)。
此外,
经
接受
VHDL或Verilog由Active -HDL FSM图形制作
有限状态机编辑器。对于模拟,
经
提供
定时模拟器,以及VHDL和Verilog时序模型
与第三方仿真器使用。
圣荷西
CA 95134 408-943-2600
修订后的2002年1月9日
3901北一街
CY3125
VHDL和Verilog编译器
VHDL和Verilog是强大的,业界标准语言
对于行为的设计输入和仿真,并支持
由EDA工具的所有主要供应商。它们允许设计师
学习一种语言是用于设计的各个方面有用
流程。
VHDL和Verilog设计人员提供描述DE-的能力
标志在许多不同的层面。在最高级别,设计可以
输入作为它们的行为的描述。这种行为
描述不依赖于任何特定的目标设备。其结果,
模拟可以很早就做在设计,验证正确的
功能,这显著加快设计过程。
该
经
语法, VHDL和Verilog包括支持
中级入门模式,如状态表和Bool-
EAN项。在最低水平,设计可以使用描述
门级描述。
经
让设计的灵活性
以混合使用这些输入模式的。
此外, Verilog和VHDL让你来设计hierarchical-
LY,建立实体的其他实体的术语。这可以让你
工作不是“自上而下” (设计的最高水平
系统和它的接口,再前进到更大和
更详细)或“自下而上” (设计基本建筑
该系统的块,然后结合这些来构建更大,
较大的部分)同样容易。
由于这些语言的IEEE标准,多文氏
在两个大四川农村发展组织提供的工具进行设计输入和仿真,并
低的水平和综合设计,以不同的硅靶的。
使用与设备无关的行为的设计输入给
用户可以自由轻松地迁移到高容量的技
吉斯。的VHDL和Verilog工具的广泛可用性提供
完整的供应商独立为好。设计师就可以开始
用他们的项目
经
赛普拉斯的CPLD和转换
使用相同的VHDL或Verilog高容量的ASIC behav-
ioral描述与行业标准的综合工具。
在VHDL和Verilog语言还允许用户定义
自己的职能。用户定义的函数允许用户EX-
一般语言的能力,并建立可重复使用的文件
测试例程。 VHDL和Verilog提供控制在时序
荷兰国际集团的事件或过程。他们构建标识
进程作为任何顺序,并行,或它们的组合
两者。描述的相互作用时,这是必需
复杂的状态机。
VHDL和Verilog中含有丰富的编程语言。他们flex-
ibility体现现代数字系统的性质,并允许
设计师创造的数字设计精确的模型。如下─
因为他们不是冗长的语言,他们很容易学习
和编译。此外,模型的VHDL和Verilog创建
可以容易地输送到其它EDA环境。
经
支持IEEE 1164分之1076 VHDL ,包括循环,for / gener-
吃报表,完整层次的设计与包装, enu-
merated类型和整数以及IEEE 1364的Verilog
包括循环,减少和条件运算符。
的部分
经
描述,它指定的行为或
设计的结构被称为一个实体/架构对。
实体/架构对,因为他们的名字所暗示的,分
分为两部分:实体声明,该声明
设计的接口信号(即定义了外部信号
设计了,而他们的方向和类型) ,以及
一个设计体系结构,它描述了设计的行为
或结构。
设计文件的实体部分是一个什么样的声明
设计呈现给外部世界(接口) 。对于每一个
外部信号,实体声明指定的信号的名称,
一个方向和一个数据类型。此外,实体声明
指定由该实体可以在一个被引用的名称
设计架构。这部分显示了代码段
5样本设计文件。每个实施例的顶部
采用了实体声明。
行为描述
一个设计文件的结构部分指定的功能
的设计。如图
图1中,
多种设计输入
方法是在支持
翘曲。
行为描述
在VHDL中往往包括众所周知的结构,如
如果... THEN ... ELSE ,和case语句。下面是一个代码
从一个简单的状态机设计段(苏打水
自动贩卖机),使用行为VHDL实现
设计:
LIBRARY IEEE ;
USE ieee.std_logic_1164.all ;
实体饮料
PORT (镍,角钱,季度,时钟: #in
STD_LOGIC ;
returnDime , returnNickel , giveDrink :出
STD_LOGIC ) ;
END饮料;
酒后建筑有限状态机
TYPE drinkState IS (零,五,十,十五,
20 , TWENTYFIVE , owedime ) ;
SIGNAL drinkstatus : drinkState ;
开始
PROCESS BEGIN
等到时钟= ' 1 ' ;
giveDrink < = ' 0 ';
returnDime < = ' 0 ';
returnNickel < = ' 0 ';
CASE drinkStatus IS
如果为零= >
中频(镍='1' )THEN
drinkStatus < = 5 ;
ELSIF (毛钱= ' 1 ' ) THEN
drinkStatus < =十;
ELSIF (季='1' )THEN
drinkStatus < = TWENTYFIVE ;
END IF;
当时有五名= >
第2页8
一个VHDL设计实例
设计输入
经
说明指定:
行为或外观设计的结构,
的信号在一个设计中的映射的一个销
PLD / CPLD (可选)
文件编号: 38-03046修订版**
CY3125
中频(镍='1' )THEN
drinkStatus < =十;
ELSIF (毛钱= ' 1 ' ) THEN
drinkStatus < = 15 ;
ELSIF (季='1' )THEN
giveDrink < ='1' ;
drinkStatus < =零
END IF;
- 几种状态在此省略
- 例子。被忽略的状态是10 ,
- 15 , 20 ,和TWENTYFIVE 。
WHEN owedime = >
returnDime < ='1' ;
drinkStatus < =零;
当别人= >
- 这可以确保国家
- 重置机器本身,如果
- 它以某种方式进入不确定状态。
drinkStatus < =零;
END CASE ;
结束进程;
END FSM ;
VHDL是一种强类型语言。它配备了几个
预定义运算符,如+和/ = (添加,不等于到) 。
VHDL提供定义为多重含义的能力
运算符(如+),这导致了简单化
编写的代码。例如,下面的代码片段所示
说:“算上< =计数+1 ”可写,这样算一个
std_logic_vector ,和1是整数。
LIBRARY IEEE ;
USE ieee.std_logic_1164.all ;
USE work.std_arith.all ;
实体序列
端口( CLK :在STD_LOGIC ;
S: INOUT STD_LOGIC ) ;
结束序列;
序列建筑有限状态机
信号计数: std_logic_vector ( 3 downto 0 ) ;
开始
PROCESS BEGIN
等到CLK = ' 1 ' ;
CASE计数为
当x为“0” | X “1”
s < ='1' ;
数< =计
当X “4” | X “ 5 ”
s < = ' 0 ';
数< =计
当X “8” | X “9”
s < ='1' ;
数< =计
当别人= >
| X“ 2 ” | X “ 3 ” = >
+ 1;
| X“ 6 ” | X “ 7 ” = >
+ 1;
& GT ;
+ 1;
s < = ' 0 ';
数< = (他人= > ' 0 ');
END CASE ;
结束进程;
END FSM ;
在这个例子中, +运算符重载,同时接受
整数和STD_LOGIC参数。
经
支持超载
运营商。
功能
VHDL的主要优点是实现功能的能力
系统蒸发散。功能的支持,让设计,通过重复使用
简单地指定一个函数,并通过适当的
参数。
经
具有一些内置功能,如
TTF (真值表功能) 。该TTF功能特别
用状态机或查找表的设计。该
下面的代码描述了七段显示译码器
实施与TTF功能:
LIBRARY IEEE ;
USE ieee.std_logic_1164.all ;
USE work.table_std.all ;
实体SEG7 IS
端口(
输入: IN STD_LOGIC_VECTOR ( 03)
输出: OUT STD_LOGIC_VECTOR ( 06)
);
END SEG7 ;
建筑混合SEG7是
恒truthTable :
ttf_table (0 11 010 ) := (
- input&
产量
-- -----------------------
“0000” & “ 0111111 ” ,
“0001” & “ 0000110 ” ,
“0010” & “ 1011011 ” ,
“0011” & “ 1001111 ” ,
“0100” & “ 1100110 ” ,
“0101” & “ 1101101 ” ,
“0110” & “ 1111101 ” ,
“0111” & “ 0000111 ” ,
“1000” & “ 1111111 ” ,
“1001” & “ 1101111 ” ,
“ 101- ” & “ 1111100 ” , --creates ê模式
“ 111- ” & “ 1111100 ”
);
开始
输出< = TTF ( truthTable ,输入) ;
END混合;
布尔方程
提供给第三设计输入方法
经
用户是布尔
方程式。
图2
显示一个简单的一比特的一半的示意性
加法器。下面的代码说明这一位半加器怎么能
在实施
经
布尔方程:
文件编号: 38-03046修订版**
第3页8
CY3125
2
x
y
携带
SUM
x
CLK
d
q
CLK
q0
q1
q2
d
q
CLK
d
q
CLK
图2:一位半加器
LIBRARY IEEE ;
USE ieee.std_logic_1164.all ;
--entity声明
实体half_adder IS
PORT ( X,Y :IN STD_LOGIC ;
总之,随身携带: OUT STD_LOGIC ) ;
END half_adder ;
--architecture体
建筑的行为half_adder是
开始
综上所述< = X XOR ;
开展< = X和Y ;
END的行为;
结构VHDL
而所有的设计方法如此描述有多远
高层次的输入方法,结构VHDL提供了一种方法
为在非常低的水平设计。中的结构性描述,该
设计人员只需列出了构成设计的组件
并指定如何将这些组件连接到一起。
科幻gure
3
显示一个简单的3位的移位寄存器和所述的概略
下面的代码显示了如何这样的设计可以在被描述
经
用VHDL结构:
LIBRARY IEEE ;
USE ieee.std_logic_1164.all ;
USE work.rtlpkg.all ;
实体shifter3为端口(
CLK :IN STD_LOGIC ;
X: IN STD_LOGIC ;
Q0 : OUT STD_LOGIC ;
Q1 : OUT STD_LOGIC ;
Q2 : OUT STD_LOGIC ) ;
END shifter3 ;
shifter3建筑结构是
SIGNAL q0_temp , q1_temp , q2_temp : STD_LOGIC ;
开始
D1 : DFF端口映射(X , CLK , q0_temp ) ;
D2 : DFF端口映射( q0_temp , CLK , q1_temp ) ;
D3 : DFF端口映射( q1_temp , CLK , q2_temp ) ;
Q0 < = q0_temp ;
Q1 < = q1_temp ;
Q2 < = q2_temp ;
END结构;
图3.三位移位寄存器电路设计
所有所描述的设计输入方法,可以混合为
所需。 VHDL具有两个高结合能力和
低级别的条目的方法在单个文件中。的灵活性和
VHDL功率允许的用户
经
使用来描述设计
任何一种方法适合于它们的特定设计。
一个Verilog设计实例
设计输入
经
说明指定:
行为或外观设计的结构,
的信号在一个设计映射到一个PLD / CPLD的销
(可选)
的部分
经
描述,它指定的行为或
设计的结构被称为模块。该模块DE-
克拉雷斯设计的接口信号(即定义了克斯特
最终信号的设计了,而他们的方向和
类型) 。
设计文件的模块部分是一个什么样的声明
设计呈现给外部世界(接口) 。对于每一个
外部信号,该模块指定信号名称,方向
和一个数据类型。此外,该模块声明指定
由该实体可以在其他引用的名称
模块。这部分显示的代码段从四个样本
设计文件。每个实施例的顶部设有所述
模块声明。
行为描述
设计文件的模块部分指定的功能
设计。如图
图1中,
多种设计输入方法
在支持
翘曲。
用Verilog行为描述
通常包括众所周知的结构,如IF ... ELSE和
case语句。这里是从一个简单的一个代码段
状态机设计(汽水自动贩卖机),使用
行为的Verilog实现设计:
模块的饮料(镍,角钱,季度,时钟,
returnDime , returnNickel ,
giveDrink ) ;
INPUT镍,角钱,季度,时钟;
输出returnDime , returnNickel , giveDrink ;
REG returnDime , returnNickel , giveDrink ;
参数为零= 0, 5 = 1, 10 = 2,
15 = 3, 20 = 4, TWENTYFIVE = 5
owedime = 6 ;
REG [ 1 : 0 ] drinkStatus ;
总是@ ( POSEDGE时钟)
文件编号: 38-03046修订版**
第4页8
CY3125
开始
giveDrink = 0;
returnDime = 0;
returnNickel = 0;
CASE ( drinkStatus )
零: BEGIN
中频(镍)
drinkStatus = 5 ;
ELSE IF (一分钱)
drinkStatus = 10 ;
ELSE IF (季)
drinkStatus = TWENTYFIVE ;
结束
五: BEGIN
中频(镍)
drinkStatus = 10 ;
ELSE IF (一分钱)
drinkStatus = 15 ;
ELSE IF (季)
开始
drinkStatus =零;
giveDrink = 1;
结束
结束
//几个州都在这省略
//例子。被忽略的状态是10
// 15 , 20 ,和TWENTYFIVE 。
owedime : BEGIN
returnDime = 1;
drinkStatus =零;
结束
默认值: BEGIN
//这可以确保国家
//重置机器本身,如果
//它在某种程度上进入不确定状态。
drinkStatus =零;
结束
ENDCASE
结束
endmodule
Verilog的是不是一个强类型语言。的简便性和
下面的代码可读性提高了使用的
CASEX 。该CASEX命令接受“无关”和
选择分支取决于表达的值。
模块序列(CLK ,多个) ;
输入CLK ;
INOUT S;
线S ;
REG温度;
REG [ 3 : 0 ]计数;
总是@ ( posedge时钟)
CASEX (计数)
4'b00XX : BEGIN
temp=1;
count=count+1;
结束
SUM
4'b01XX : BEGIN
temp=0;
count=count+1;
结束
4'b100X : BEGIN
temp=1;
count=count+1;
结束
默认值: BEGIN
temp=0;
count=0;
结束
ENDCASE
ASSIGN S =温度;
endmodule
布尔方程
可到第二个设计输入方法
经
Verilog的用户
是布尔方程。
图4
显示一个简单的示意性
1位半加法器。下面的代码说明了如何这一位半
加法器可以被实现
经
布尔方程:
x
y
携带
图4.一位半加器
模块half_adder ( X,Y ,总之,随身携带) ;
输入X,Y ;
输出总和,携带方便;
ASSIGN总和= X ^ ;
ASSIGN随身= x&y ;
endmodule
结构的Verilog
而所有的设计方法如此描述有多远
高层次的输入方法,结构的Verilog提供了一种方法
为在非常低的水平设计。中的结构性描述,该
设计人员只需列出了构成设计的组件
并指定如何将这些组件连接到一起。
图5
显示一个简单的3位的移位寄存器的原理图和
下面的代码显示了如何这样的设计可以在被描述
经
使用结构的Verilog 。
模块shifter3 (CLK中,x , Q0, Q1,Q2) ;
输入CLK , X;
输出Q0 , Q1,Q2 ;
WIRE Q0 , Q1,Q2 ;
REG q0_temp , q1_temp , q2_temp ;
DFF D1 (X , CLK , q0_temp ) ;
DFF D2 ( q0_temp , CLK , q1_temp ) ;
DFF D3 ( q1_temp , CLK , q2_temp ) ;
ASSIGN Q0 = q0_temp ;
ASSIGN Q1 = q1_temp ;
ASSIGN Q2 = q2_temp ;
ENDMODULE ;
文件编号: 38-03046修订版**
第5页8