一:常识
QuartusII是Altera公司在21世纪推出的FPGA/CPLD开发环境,具有功能强大,界面友好,使用便捷等优点。
1:quartusII的特点
1支持多时钟定时分析,LogicLock基于块的设计,SOPC,内嵌 SignalTapII逻辑分析器,功率估算器等高级工具。
2易于引脚分配和时序分析。
3具有强大的HDL综合能力。
4支持器件种类多
5支持Windows,Linux等多种操作系统。
6支持第三方工具的链接。
2:支持的器件
Stratix系列,Cyclone系列,Max系列,等等
一:基于quartusII的开发流程
1.原理图输入:原理图是图形化的表达式,使用元件符号和连线来描述设计。
2.HDL文本输入:硬件描述语言是一种用文本形式来描述设计电路的语言。(VHDL和Verilog HDL)
综合是一个很重要的步骤,是指将较高级抽象层次的设计描述自动转化为较低层次描述的过程。
(1).将算法表示、行为描述转换到寄存器传输级(RTL),即从行为描述到结构描述。
(2).将RTL级描述转换到逻辑门级(包括触发器),称为逻辑综合。
(3).将逻辑门表示转换到版图表示,或转换到PLD器件的配置网表;根据版图信息能够进行ASIC生产,有了配置网表可完成基于PLD器件的系统实现。
综合工具:Synplify\Synplify Pro
同时进行时序约束
综合之后进行布局布线
Fitter会努力按照时序约束的 要求进行布局和布线优化的
布局布线:将综合生成的电路逻辑网表映射到具体的目标器件中实现,并产生最终的可下载文件的过程。布局布线完成后会产生延时网表结构,以便于进行精确的时序仿真。布局:是将已分割的逻辑小块放到器件内部逻辑资源的具体位置,并使他们易于连接。布线:是利用器件的布线资源完成各功能之间和反馈信号之间的连接。
不考虑信号时延等因素的仿真,有称为前仿真。
在综合与布局布线之前
将由综合器产生的网表文件配置与指定的目标器件中。
时序分析:设计者提出一些特定的时序要求(即所谓的添加时序约束),套用特定时序模型,针对特定电路进行分析。总的来说是基于延时的考虑。
时序仿真:他是在选择具体器件并完成布局布线后进行的包含延时的仿真,又称为后仿真。
仿真工具:ModelSim
搭建仿真测试平台:Testbench
IP核:软核,固核,硬核。
IP(Intellectual Property)就是常说的知识产权。美国Dataquest咨询公司将半导体产业的IP定义为用于ASIC、ASSP和PLD等当中,并且是预先设计好的电路模块。IP核模块有行为(Behavior)、结构(Structure)和物理(Physical)三级不同程度的设计,对应描述功能行为的不同分为三类,即软核(Soft IP Core)、完成结构描述的固核(Firm IP Core)和基于物理描述并经过工艺验证的硬核(Hard IP Core)。
什么是软核?
IP软核通常是用HDL文本形式提交给用户,它经过RTL级设计优化和功能验证,但其中不含有任何具体的物理信息。据此,用户可以综合出正确的门电路级设计网表,并可以进行后续的结构设计,具有很大的灵活性,借助于EDA综合工具可以很容易地与其他外部逻辑电路合成一体,根据各种不同半导体工艺,设计成具有不同性能的器件。软IP内核也称为虚拟组件(VC-Virtual Component)。
什么是固核?
IP固核的设计程度则是介于软核和硬核之间,除了完成软核所有的设计外,还完成了门级电路综合和时序仿真等设计环节。一般以门级电路网表的形式提供给用户。
什么是硬核?
IP硬核是基于半导体工艺的物理设计,已有固定的拓扑布局和具体工艺,并已经过工艺验证,具有可保证的性能。其提供给用户的形式是电路物理结构掩模版图和全套工艺文件,是可以拿来就用的全套技术。
Verilog HDL
硬件描述语言(Hardware Discription Language HDL):以文本形式来描述数字系统的硬件结构和行为,是一种用形式化来描述数字电路和系统的语言。用一系列分层次的模块来表示复杂的数字系统,并逐层进行验证仿真,再把具体的模块组合由综合工具转化为门级网络表,然后再利用布局布线工具把网络表转化为具体电路结构的实现。
任务和函数的区别
比较点 |
任务 |
函数 |
输入、输出 |
可以有任意多个各种类型的参数 |
至少有一个输入,不能有输出和双向端口 |
调用 |
任务只能在过程语句中调用,而不能在连续赋值语句中调用 |
函数可作为赋值操作的表达式,用于过程赋值和连续赋值语句 |
触发事件控制 |
任务中不能出现always语句,initial语句;可以包含延时控制语句(#),但只能面向仿真,不能综合
|
函数中不能出现(always、#)这样的语句,要保证函数的执行在零时间内完成 |
调用其他任务和函数 |
可以调用其他任务和函数 |
只能调用函数,不能调用任务 |
返回值 |
没有返回值 |
只有一个返回值 |
其他说明 |
任务调用语句可以作为一条完整的语句出现 |
函数调用语句不能单独作为一条语句出现,只能作为赋值语句的右端操作数 |
一:电路的三种描述形式:
1:结构描述形式,从电路结构来描述电路模块。
2:数据流描述形式,对线型变量进行操作。
3:行为级描述形式,从功能和行为的角度来描述电路模块。
二:电路的五种模型:
系统级,算法级,RTL级,门级,开关级。
(前三种属于行为描述,“门级”就属于结构描述)
三:数据类型
网线类型:表示Verilog Hdl中结构化元件之间的物理连线。
寄存器类型:表示数据的存储单元。
区别:寄存器类型数据保持最后一次赋值,而网线类型数据则需要持续更新。
Verilog HDL程序模块中I/O信号类型默认为wire型。Wire型可以用作方程式的输入,也可以用作assign语句的或实例元件的输出。
Reg型一般用在always中,一般输出端口默认为wire型,所以要将用到的端口改为reg型。
寄存器可以取任意长度。Reg型数据的默认值是未知的,可以为正值或负值。但当一个reg型数据是表达式中操作数时,它的值被当做无符号值,即是正值。
如果一个4位的reg型数据被写入一个-1,在表达式运算时,被当做15;(1的补码)(补码等于反码加一)
Reg [3:0]a;
a=-1; //a的值为15(1111),1的反码:1110,补码:1111;
四:算术运算符
操作符“+”,“-”,“*”,是可综合的,而“/”,“%”这两种操作符,只有当除数和模值为2的幂次方时(2,4,8,16......)才是可综合的。
五:移位运算符
操作符“<<”,“>>”
“<<”:左移一位,值乘以2; //a<<1;
“>>”:右移一位,值除以2; //a>>1;
(记忆:原数都在左边,移位数都在右边)
六:case语句
Case语句虽然可以缺少default分支语句,但一般不要缺省,否则在组合逻辑中,会和if语句中缺少else分支一样,生成锁存器。
用户403664 2014-8-12 14:59