
FPGA/CPLD
formerman
这个作者很懒,什么都没留下…
展开
-
FPGA与CPLD的区别
转自:http://tvb2058.spaces.eepw.com.cn/articles/article/item/15358 尽管FPGA和CPLD都是可编程ASIC器件,有很多共同特点,但由于CPLD和FPGA结构上的差异,具有各自的特点:①CPLD更适合完成各种算法和组合逻辑,FP GA更适合于完成时序逻辑。换句话说,FPGA更适合于触发器丰富的结构,而CPLD更适合于触发器有限而转载 2009-08-26 18:53:00 · 1145 阅读 · 0 评论 -
Verilog HDL仿真激励的产生
一、变量初始化变量初始化的基本原则为:可综合代码中完成内部变量的初始化,Testbench中完成可综合代码所需的各类接口信号的初始化。初始化的方法有两种:一种是通过initial语句块初始化;另一种是在定义时直接初始化。当initial语句块中有多条语句时,需要用begin…end或者fork…join语句。直接初始化,如:reg [7:0] cnt = 8b00000000原创 2009-09-13 19:48:00 · 23490 阅读 · 4 评论 -
Verilog HDL的任务和函数
Technorati 标签: FPGA,CPLD,Verilog HDL 任务和函数只能实现组合逻辑,而对时序逻辑无能为力。 一、任务 任务就是一段封装在“task…endtask”之间的程序。任务可以彼此调用,而且任务内还可以调用函数。 1、任务定义 形式如下: task task_id; // 任务名 [declaration]原创 2009-09-11 15:35:00 · 6094 阅读 · 0 评论 -
Verilog HDL的编译预处理语句
一、宏定义define语句 包括宏定义指令包括:define和undef。 声明语法格式:define 在代码中的应用格式:macro_name 和parameter的区别: 作用域不同:parameter作用于声明的那个文件。而define的作用范围从编译器读到define语句开始,到undef语句结束。可以超过单个文件的原创 2009-09-11 17:09:00 · 10105 阅读 · 1 评论 -
Verilog HDL中的延迟控制语句
延迟语句用于对各条语句的执行时间进行控制,从而快速满足用户时序的要求。 Verilog HDL语言中延时控制的语法格式有两类: # 行为语句; #; 其中,“#”是延迟控制的关键字符,可以是直接指定的延迟时间量,并以多少个仿真时间单位的形式给出。延迟时间可以是常量数字,也可以是表达式或变量。原创 2009-09-13 14:06:00 · 10575 阅读 · 1 评论 -
Verilog HDL常用的行为仿真描述语句(一)
一、循环语句1、forever语句forever语句必须写在initial模块中,主要用于产生周期性波形。2、利用for、while循环语句完成遍历for、while语句常用于完成遍历测试。当设计代码包含了多个工作模式,那么就需要对各个模式都进行遍历测试。其典型的应用模板如下:parameter mode_num = 5;initial begin原创 2009-09-13 14:40:00 · 6708 阅读 · 0 评论 -
Verilog HDL常用的行为仿真描述语句(二)
二、force和release语句 force/release语句用来跨越进程对一个寄存器或一个电路网络进行赋值。 force语句可为寄存器类型和线网类型变量强制赋值。 当应用于寄存器变量时,寄存器当前值被force覆盖;当release语句应用于寄存器变量时,寄存器当前值将保持不变,知道重新赋值。 当force语句应用于线网变量时,数值立即被force覆盖;当relea原创 2009-09-13 15:24:00 · 5068 阅读 · 0 评论 -
Verilog HDL常用的行为仿真描述语句(三)
三、wait语句wait语句是一种不可综合的电平触发事件控制语句,有如下两种形式: wait(条件表达式) 语句/语句块;wait(条件表达式);对于第一种形式,语句块可以是串行块(begin…end)或并行块(fork…join)。当逻辑表达式为“真”时,语句块立即得到执行;否则,暂停进程并等待,直到逻辑表达式变为“真”,再开始执行。对于第二种形式,当仿真执行原创 2009-09-13 15:50:00 · 12437 阅读 · 0 评论 -
Verilog HDL常用的行为仿真描述语句(六)
六、串行激励与并行激励语句 begin…end语句用于启动串行激励,fork…join语句用于启动并行激励。 fork…join语句语法格式如下: fork : 时间控制1 行为语句1; … 时间控制n 行为语句n; join 其中,fork…join块内被赋值的语句必须为寄存器型变量。其主要特点如下: 并行块内语句是同时开原创 2009-09-13 16:47:00 · 1886 阅读 · 0 评论 -
一个简单的2选1数据选择器的测试平台(Testbench)
`include "mux2.v" module t; reg ain, bin, sel; reg clk; wire outw;initial // 把寄存器变量初始化为确定值 begin ain = 0; bin = 0; sel = 0; clk = 0; endalways #50 clk = ~clk; // 产生一个不断原创 2009-09-14 14:17:00 · 11730 阅读 · 1 评论 -
Verilog HDL语言的用户自定义元件
Verilog HDL语言提供了一种扩展基元的方法,允许用户自己定义元件(User Defined Primitives,UDP)。通过UDP,可以把一块组合逻辑电路或时序逻辑电路封装在一个UDP内,并把这个UDP作为一个基本门元件来使用。需要注意的是,UDP是不能综合的,只能用来仿真。 1、定义UDP的语法: primitive 元件名(输出端口名, 输入端口名1, 输入端口名2,…)原创 2009-09-13 18:05:00 · 2866 阅读 · 0 评论 -
Verilog HDL常用的行为仿真描述语句(五)
五、task和function语句task语句和function语句可以将固定操作封装起来,配合延时控制语句,可精确模拟大多数常用的功能模块。 例:timescale 1ns / 1psmodule tb_tri; parameter bsize = 8; parameter clk_period = 2; parameter cac_delay = 6;原创 2009-09-13 16:13:00 · 1671 阅读 · 0 评论 -
如何根据项目选择FPGA/CPLD器件
一、CPLD还是FPGAFPGA适合完成时序逻辑,CPLD适合完成各种算法和组合逻辑;CPLD的时序延时是均匀的和可预测的,而FPGA的布线结构决定了其延时的不可预测性;FPGA的集成度比CPLD高,具有更复杂的布线结构和逻辑实现;CPLD无需外部存储器芯片,而FPGA的编程信息需存放在外部存储器上,使用方法复杂;CPLD保密性比FPGA强;一般情况下,CPLD的功耗要原创 2009-09-02 18:37:00 · 2727 阅读 · 0 评论 -
Cyclone II 器件的外部存储器接口
在新的以及现有的FPGA市场上,Cyclone? II器件扩展了FPGA在低成本、大批量应用领域的角色。FPGA如今不再仅限于外围应用,可以在系统中执行很多关键性处理任务。随着FPGA越来越多地应用于系统的数据路径,当系统存储需求超过片内丰富的存储器资源时,FPGA必须具有和外部存储器件的接口。 Altera基于成功的Cyclone器件系列,通过和业界领先的存储器供应商合作,确保了用户能够将最转载 2009-09-10 15:11:00 · 3591 阅读 · 0 评论 -
Verilog HDL数据类型
Verilog HDL的数据类型分为两大类:线网类型和寄存器类型。线网类型主要表示Verilog HDL中结构化元件之间的物理连线,其数值由驱动元件决定。如果没有驱动元件接到线网上,则其默认值为高阻z。寄存器类型主要表示数据的存储单元,其默认值为不定x。二者最大的区别在于:寄存器类型数据保持最后一次的赋值,而线网类型数据则需要持续的驱动。 一、线网类型:wire:标准连线(默认为该原创 2009-09-10 22:06:00 · 12816 阅读 · 0 评论 -
关于FPGA/CPLD的VCCINT与VCCIO
VCCINT:Supply voltage for internal logic and input buffers,即为内部逻辑电路和输入缓冲提供电压。VCCIO:Supply voltage for output buffers,即为输出缓冲提供电压。 一般说来,VCCINT为1.2V,而VCCIO有3.3、2.5、1.8、1.5几种。原创 2009-09-10 15:45:00 · 5926 阅读 · 0 评论 -
Verilog HDL运算符
一、逻辑运算符:&&:逻辑与; ||:逻辑或; !:逻辑非。 二、关系运算符:==:逻辑相等; !=:逻辑不等; ===:全等; !==:不全等。 "==="和"!=="可以比较含有x和z的操作数,在模块的功能仿真中有着广泛的应用。三、位运算符:~:非; &:与; |:或; ^:异或; ^~:同或。 四原创 2009-09-10 22:19:00 · 38425 阅读 · 3 评论 -
基于FPGA/CPLD应用设计的23点经验总结——关于VHDL代码风格
摘自《FPGA/CPLD应用设计200例》 对所有的信号名、变量名和端口名都用小写,对常量名和由用户定义的类型用大写。 使用有意义的信号名、变量名、端口名和参数名。 信号名长度不要太长,力求简洁明了。 对于时钟信号使用clk作为信号名或信号名的前缀(当设计中存在多个时钟时)。 对来自同一驱动源的信号,在不同的子模块中采用相同的名字。这要求在芯片总体设计时就定原创 2009-09-09 16:04:00 · 1615 阅读 · 0 评论 -
Verilog HDL的Testbench简介
Testbench模块没有输入输出,在Testbench模块内例化待测设计的顶层模块,并把测试行为的代码封装在内,直接对测试系统提供测试激励。下面是一个基本的Testbench结构模块: module testbench; // 数据类型声明 // 对被测试模块实例化 // 产生测试激励 // 对输出响应进行收集 endmodu原创 2009-09-13 09:57:00 · 9384 阅读 · 0 评论 -
Verilog HDL分层事件队列
原创 2009-09-13 10:50:00 · 2784 阅读 · 0 评论 -
Verilog HDL常用的行为仿真描述语句(四)
四、事件控制语句在仿真程序中,可以通过“@(事件表达式)”来完成单次事件的触发。分电平触发和信号跳变沿(posedge上升沿和negedge下降沿)触发两大类。原创 2009-09-13 15:58:00 · 1615 阅读 · 0 评论 -
参数化模块库(LPM)的使用
LPM(Library Parameterized Modules)即参数化的宏功能模块库。应用这些功能模块库可以大大提高IC设计的效率。LPM标准在1990年被推出,1993年4月,LPM作为电子设计交换格式(EDIF)的附属标准,纳入了电子工业协会(EIA)的临时标准。在MAX+PLUS II 和 Quartus II中调用LPM库函数非常方便,用户既可以在图形输入法中直接调用,也可以转载 2009-10-12 10:27:00 · 16820 阅读 · 0 评论