■出售外链〓提升排名┿【QQ:1012189958】 1号站 1号站平台 1号站娱乐 一号站平台 拉菲娱乐 拉菲2 拉菲娱乐 万达平台 万达平台 万达平台 万达平台 万达娱乐 万达娱乐 万达娱乐 东森平台 东森平台 东森平台 东森娱乐 东森娱乐 东森娱乐 杏彩平台 杏彩平台 杏彩平台 杏彩平台 杏彩娱乐 杏彩娱乐 杏彩娱乐 杏彩娱乐 杏彩娱乐 凤凰平台 凤凰平台 凤凰平台 凤凰平台 凤凰平台 凤凰娱乐 凤凰娱乐 凤凰娱乐 凤凰娱乐 凤凰娱乐 娱乐天地 娱乐天地 娱乐天地 娱乐天地 娱乐天地 娱乐天地 娱乐天地 娱乐天地 娱乐天地 娱乐天地 娱乐天地 娱乐天地 娱乐天地 世爵平台 世爵平台 世爵平台 世爵平台 翡翠平台 世爵娱乐 世爵娱乐 世爵娱乐 世爵娱乐 翡翠平台 翡翠平台 翡翠平台 翡翠娱乐 翡翠娱乐 畅博娱乐 畅博娱乐 畅博娱乐 畅博娱乐 畅博娱乐 畅博娱乐 畅博娱乐 畅博娱乐 畅博娱乐 畅博娱乐 华宇平台 华宇平台 华宇平台 华宇平台 华宇平台 华宇平台 华宇平台

娱乐平台-娱乐天地[拉菲II]-用户登录注册

温故而知新:从电路里来,到Verilog里去!

2017-11-11 09:13 网络整理


4. 定制器件,细节入手
FPGA才是“上得厅堂,下得厨房,安得系统,打得流氓”的多面手,其结构如图8所示。


图8 某FPGA的功能结构图


其中包括可编程输入输出单元(IOB,Input Output Block)、可配置逻辑块(CLB,Configurable Logic Block)、数字时钟管理模块(DCM,Digital Clock Management) 和嵌入式块RAM(BRAM,Block RAM) 等部分。这个里面与Verilog语言设计电路有关的部分是CLB,揭开CLB的盖头来,您老将会看到如图9所示的一副尊容。以Xilinx公司的FPGA器件为例,CLB由多个(一般为2个或4个)相同的Slice(这个词还真不好翻译,查了半天度娘,看到唯一靠点谱的说法是逻辑片)和附加逻辑构成。其中,Slice是基本的逻辑电路实现单元,属于中等后面介绍;外围电路中,开关网络主要完成一般信号的可配置连接,快速连接线进行时钟和复位等关键信号的连接。


图9 Xilinx公司FPGA中CLB的结构图


Slice的结构如图10所示,一个Slice由两个4/6输入的LUT(查找表,Look Up Table)、进位算术逻辑、D触发器和函数复用器组成。算术逻辑包括一个异或门和一个专用与门,一个异或门可以使一个Slice实现2bit全加操作,专用与门用于提高乘法器的效率(这个后文书有详细讲解,这里属于“看热闹”的内容);进位逻辑由专用进位信号和函数复用器(MUXC)组成,还包括两条快速进位链,用于提高CLB模块的处理速度,用于实现快速的算术加减法操作。4输入LUT用于实现组合逻辑运算。


图10 Xilinx公司某款FPGA Slice的结构


同学们有没有感到惊讶呢?如果有,说明你的《数字电子技术》的学费没白交。说好的用于组合逻辑的门级电路呢?还有编码器、译码器等等,等等?这些器件都没有,怎么设计组合逻辑啊?“风萧萧兮易水寒,虞兮虞兮奈若何?”


LUT本质上就是一个RAM,里面存着真值表。目前FPGA中,多数采用4输入的LUT,所以每一个LUT可以看成一个有4 位地址线的 的RAM。 当用户通过原理图或HDL语言描述了一个逻辑电路以后,EDA软件会自动计算逻辑电路的所有可能结果,并把真值表事先写入 RAM。这样,每输入一个信号进行逻辑运算就等于输入一个地址进行查表,找出地址对应的内容,然后输出即可。对于输入高于4比特的输入,EDA软件会自动把输入拆分成若干LUT,最后联合输出。(真值表是什么,这个不用讲了吧。不懂的人,数电考试肯定作弊的,回去重修!)官方说法是:“由于基于LUT的FPGA具有很高的集成度,其器件密度从数万门到数千万门不等,可以完成极其复杂的时序与逻辑组合逻辑电路功能,所以适用于高速、高密度的高端数字逻辑电路设计领域” 。所以本书介绍的结构竟然是流行趋势,好极好极!


最后来看一看开发流程里面的“综合”这个过程,那些“优化”什么的亮瞎钛合金狗眼的概念,对于FPGA的组合逻辑方面还存在吗?我们估计独立思考。贫道闻到了退化的味道。这也不是说EDA软件没用,LUT组合方面的算法还是可圈可点的嘛。


5. 语言缺陷,电路子集
Verilog设计之初就号称可以一次打两只鸟:设计和验证,殊不知这两个方向的思路却相差很大。数字逻辑的设计是基于数电的,受限制于电路器件的特性;反观数字逻辑系统的验证,这是一个纯粹软件仿真的活计,工程师更加喜欢一般程序设计语言的思路。在老衲参与的很多技术讨论里面发现,这“两鸟”不仅仅没有打到,这把“米”是一定“蚀”了。大多数初学者完全分不清那些可以综合,那些不可以。


老僧也在总结这个现象的原因,吾称之为:“教不得法,学不得法”。“教不得法”是指,很多关于Verilog的书继承了程序语言教材的结构,把语句分为:算术运算、条件判断和循环等等部分,完全不区分可综合性,这样有误导的嫌疑;“学不得法”是一个历史原因,大多数学习者实际上具有很强的程序语言,例如C语言,的基础,这反而是有害的。人的思维是有习惯性的,Verilog的形式又与C语言很类似,所以多数人都把C语言设计里面的习惯不自觉的带入了Verilog语言的电路实现。于是乎,综合软件上报的错误“如滔滔江水,绵绵不绝”,实现与想象不一致也是“如黄河泛滥,一发不可收拾”。以上是一家之言啊,切勿对号入座,否则必有受伤者,老衲不负责医药费!


数字电路和程序语言的区别,别告诉我您不知道。下面姑且总结几条,叫大家以后面试的时候,可以说得头头是道。

为您推荐