0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

用硬件思维去理解verilog

电子工程师 来源:未知 作者:李倩 2018-08-31 16:49 次阅读

· 基本硬件设计模式 ·

读者如果学习了verilog,并且有了一定的实践经验的话应该强烈的感受到,verilog和软件(诸如C/C++)有着本质且明显的差别,是一条不可跨越的鸿沟。所以初学者把C和verilog拿来作比较是完全没用的,甚至会把初学者绕晕,影响学习效率的提高。

虽然verilog比硬件更抽象,但是最终实现的结果就是一堆硬件电路。所以评价一个verilog代码的好坏不是看代码量多少,而是看最终实现的功能和性能(有速度和面积2方面)。假设面积为S,性能为V,定义品质数Q=S/V,Q越小,设计的电路越成功。

评价一个设计者代码水平较高,只是这个设计由硬件向verilog表现形式转换更流畅,合理。一个设计最终实现的性能,很大程度上取决于设计的硬件方案是否高效合理。这是两回事。

也因上述2点,verilog设计不刻意追求代码简洁,合理的设计方法是首先理解要设计的电路,也就是把需求转化为数字电路,对此电路的结构和连接十分清晰,然后再用verilog表达出这段电路。也就是说,verilog只是简化了电路设计的工作量,本质上就是设计数字电路,永远绕不开电路这点!这也决定了不能凭空去想代码,因为只有存在的电路才是可实现的,而存在的代码未必可以变成存在的电路。

大家也应该知道,在没有verilog这种高级语言之前都是用原理图设计,必须先构思好整个电路框架,才能去实现。有了verilog以后这种思路并没有被抛弃,依然需要大家去思考电路结构,只有深入理解了电路本身,才能够有高效的设计。

· 实例说明 ·

世界上没有工作2次就自动停下的触发器,所以下面的电路综合是无法实现的。

repeat(2)@(posedge clk)

d <=x;

虽然上述语法很正确,没有毛病,但是是不现实的,现在的技术或者提供的语言还没有抽象到符合语法的都能直接综合成电路,他比较生硬,没有大家想的那么灵活。

至此可以得出一个基本结论,面向硬件的设计模式,就是要从电路特征和行为来编写代码。

例如上面的电路,要实现触发器只工作2次就停止怎么办呢?这个电路是存在的,只是不存在工作2次就自动停下的触发器,所以控制触发器运行2次后关闭使能就可以了。按照这个思路,原理图如下:

上图触发器输入数据x,输出数据d,触发器和计数器使能端由比较器控制,计数到2的时候,计数器和触发器都不使能,这样触发器就只工作了2次。也可以认为是一个简单的状态机,计数器就是状态控制。具体代码请读者思考,首先用上图思路,再用三段式状态机思路,建议二者都写出来,好好比较综合后的RTL图,并且仿真确保结果正确。

看此文之前请千万很熟悉verilog语法,能区分可综合,不可综合语句。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 硬件
    +关注

    关注

    11

    文章

    2921

    浏览量

    64746
  • Verilog
    +关注

    关注

    28

    文章

    1325

    浏览量

    109297
  • 数字电路
    +关注

    关注

    192

    文章

    1394

    浏览量

    79744

原文标题:面向硬件的设计思维——基本设计模式

文章出处:【微信号:HaveFunFPGA,微信公众号:玩儿转FPGA】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    verilog硬件描述语言课程讲义

    verilog硬件描述语言课程讲义
    发表于 05-21 15:01 33次下载
    <b class='flag-5'>verilog</b><b class='flag-5'>硬件</b>描述语言课程讲义

    Verilog硬件描述语言参考手册

    Verilog硬件描述语言参考手册,Verilog语法内容介绍
    发表于 11-12 17:20 0次下载

    Verilog HDL硬件描述语言

    Verilog HDL硬件描述语言 有需要的下来看看
    发表于 12-29 15:31 0次下载

    Verilog硬件描述语言

    VHDL语言编程学习Verilog硬件描述语言
    发表于 09-01 15:27 0次下载

    verilog代码要有硬件的概念

    因为Verilog是一种硬件描述语言,所以在写Verilog语言时,首先要有所要写的module在硬件上如何实现的概念,而不是去想编译器如何去解释这个module
    发表于 02-11 16:18 2798次阅读
    写<b class='flag-5'>verilog</b>代码要有<b class='flag-5'>硬件</b>的概念

    FPGA之硬件语法篇:Verilog关键问题解惑

    从数字电路中学到的逻辑电路功能,使用硬件描述语言(Verilog/VHDL)描述出来,这需要设计人员能够用硬件编程思维来编写代码,以及拥有扎实的数字电路功底。
    的头像 发表于 12-05 07:11 1533次阅读
    FPGA之<b class='flag-5'>硬件</b>语法篇:<b class='flag-5'>Verilog</b>关键问题解惑

    FPGA之硬件语法篇:用Verilog代码仿真与验证数字硬件电路

    从数字电路中学到的逻辑电路功能,使用硬件描述语言(Verilog/VHDL)描述出来,这需要设计人员能够用硬件编程思维来编写代码,以及拥有扎实的数字电路功底。
    的头像 发表于 12-05 07:10 3029次阅读
    FPGA之<b class='flag-5'>硬件</b>语法篇:用<b class='flag-5'>Verilog</b>代码仿真与验证数字<b class='flag-5'>硬件</b>电路

    快速理解Verilog语言

    Verilog HDL简称Verilog,它是使用最广泛的硬件描述语言。
    的头像 发表于 03-22 17:29 4436次阅读

    如何使用Verilog HDL描述可综合电路?

    1、如何使用Verilog HDL描述可综合电路 Verilog 有什么奇技淫巧?我想最重要的是理解硬件特性。Verilog HDL语言仅
    的头像 发表于 04-04 11:19 3873次阅读
    如何使用<b class='flag-5'>Verilog</b> HDL描述可综合电路?

    如何通过仿真器理解Verilog语言的思路

    要想深入理解Verilog就必须正视Verilog语言同时具备硬件特性和软件特性。
    的头像 发表于 07-07 09:54 1155次阅读

    使用Verilog/SystemVerilog硬件描述语言练习数字硬件设计

    HDLBits 是一组小型电路设计习题集,使用 Verilog/SystemVerilog 硬件描述语言 (HDL) 练习数字硬件设计~
    的头像 发表于 08-31 09:06 1207次阅读

    FPGA设计硬件语言Verilog中的参数化

    FPGA 设计的硬件语言Verilog中的参数化有两种关键词:define 和 paramerter,参数化的主要目的是代码易维护、易移植和可读性好。
    发表于 12-26 09:53 714次阅读

    从仿真器的角度理解Verilog语言1

    要想深入理解Verilog就必须正视Verilog语言同时具备硬件特性和软件特性。在当下的教学过程中,教师和教材都过于强调Verilog语言
    的头像 发表于 05-25 15:10 672次阅读
    从仿真器的角度<b class='flag-5'>理解</b><b class='flag-5'>Verilog</b>语言1

    从仿真器的角度理解Verilog语言2

    要想深入理解Verilog就必须正视Verilog语言同时具备硬件特性和软件特性。在当下的教学过程中,教师和教材都过于强调Verilog语言
    的头像 发表于 05-25 15:10 625次阅读
    从仿真器的角度<b class='flag-5'>理解</b><b class='flag-5'>Verilog</b>语言2

    verilog语言面向硬件设计的思维

    读者如果学习了verilog,并且有了一定的实践经验的话应该强烈的感受到,verilog和软件(诸如C/C++)有着本质且明显的差别,是一条不可跨越的鸿沟。
    的头像 发表于 06-28 10:44 401次阅读
    <b class='flag-5'>verilog</b>语言面向<b class='flag-5'>硬件</b>设计的<b class='flag-5'>思维</b>