![]() |
|
||||||||||||||
| . 网站首页 . 新闻 . 新品 . 方案 . 专访 . 活动 . DSP . EDA . 评测室 . 技术文库 . 会员区 . 商城 . 服务导航 . 邮购 . 资源 . | ||
|
||
|
|||||
| 可编程逻辑设计原则之硬件原则 | |||||
作者:61IC录入 文章来源:本站原创 点击数: 更新时间:2006-10-4 ![]() |
|||||
|
硬件原则主要针对HDL代码编写而言。应该明确FPGA/CPLD的逻辑设计所采用的硬件描述语言同软件语言是有本质区别的!以Verilog语言为例,虽然Verilog许多语法规则和C语言相似,但是Verilog作为硬件描述语言,他的本质作用在于描述硬件!应该认识到Verilog是采用了C语言形式的硬件的抽象,他的最终实现结果是芯片内部的实际电路。所以评判一段HDL代码的优劣的最终标准是其描述并实现的硬件电路的性能(包括面积和速度两个方面)。评价一个设计的代码水平较高,仅仅是说这个设计由硬件向HDL代码这种表现形式转换的更流畅、合理。而一个设计的最终性能,在更大程度上取决于设计工程时所构想的硬件实现方案的效率以及合理性。 片面追求代码的整洁、简短,这是错误的,是与评价HDL的标准背道而驰的! 硬件原则的另外一个重要理解是“并行”和“串行”的概念。硬件系统比软件系统速度快、实时性高,其重要原因就是硬件系统中各个单元的运算是独立的,信号流失并行的。而C语言编译后,其机器指令在CPU的高速缓冲队列中基本是顺序执行的,即使有一些并行处理的技术,也是在一定程度上是十分有限的。所以在写HDL代码的时候,应该充分理解硬件系统的并行处理特点,合理安排数据流的时序,提高整个设计的效率。 RTL级Verilog描述语法和C语言描述语法的区别举例: 1、循环 在C语言的描述中,为了使代码执行效率高,表述简洁,经常用到下面的for语句 for(i=0;i<16;i++) ... Verilog代码设计中,在RTL级编码中极少使用FOR循环,因为for循环会被综合器展开为所有变量情况的执行语句,每个变量独立占用寄存器资源,每条执行语句并不能有效的复用硬件逻辑资源,造成巨大的资源浪费。RTL硬件描述中,遇到类似算法,推荐的方式是先搞清楚设计的时序要求,做一个reg型计数器,在每个时钟沿累加,并在每个时钟沿判断计数器情况,做相应的处理,能复用的处理模块尽量复用,即使所有操作都不能复用,也采用case语句展开处理。如: reg [3:0] counter; always @(posedge clk) if(syn_rst) counter <= 4'b0; else counter <= counter+1; always @(posedge clk) begin case(counter) 4'b0000: ... default: endcase end 2、条件判断 C语言中主要有if...else和switch语句,两者之间的区别主要在于程序的长短。 Verilog中也有相应的if...else和case语句,但其描述结构就有很大的区别。if...else语句是有优先级的。一般来说第一个if的优先级最高,最后一个else优先级最低。而case语句是“平行”的结构,没有优先级。 |
|||||
| 欢迎点击进入:TI德州中文网 (国内唯一针对TI应用的中文技术网站) 文章录入:admin 责任编辑:admin | |||||
| 【发表评论】【加入收藏】【告诉好友】【打印此文】【关闭窗口】 | |||||
| 最新热点 | 最新推荐 | 相关文章 | ||
| IBIS 与Spice 时序不匹配的问… 三种类型的噪声处理 TI MSP430 14-PIN (JTAG) 单片机W77E58在“家校通"系统… 运算放大器电路固有噪声的分… 在P87LPC764单片机I2C总线系… |
| 网友评论:(只显示最新10条。评论内容只代表网友观点,与本站立场无关!) |
| | 设为首页 | 加入收藏 | 联系站长 | 友情链接 | 版权申明 | 网站公告 | 管理登录 | | |||
|
|