zoukankan      html  css  js  c++  java
  • 第一个Verilog程序:通用加法器

    Verilog作为一门硬件描述语言,快速掌握它的方法就是不断的练习,反复动手实践,通过例子掌握隐藏在语句背后的硬件电路。下面是第一个需要学习的Verilog例子:

    module adderN #(parameter N=4)(
        input[N-1:0] a,
        input[N-1:0] b,
        input cin,
        output cout,
        output[N-1] sum
    );
        assign{cout,sum)=a+b+cin;
    endmodule

    1、该例子描述了一个4位加法器,从例子可以看出整个模块是以module开始,endmodule结束。每一个module都是一个完整的电路描述,其余都只能认为是电路片段。一个模块就是一个完整的电路,如果有N个模块,这N个模块将通过某种机制结合起来,组成一个大的电路,但这N个模块都是独立运行的,而且是并行执行的。

    2、a,b前面有一个[N-1:0],这个表示a与b的位宽为N,最高位为第N-1位,最低位为0位,而cin没有位宽设定,则表示1位,对于任何有意义的逻辑变量(wire/reg,输入输出端口等),必须指定其位宽,如果没有显示的指定,位宽默认位1.

    3、parameter类型用来定义全局符号常量,等效于C语言的参数设定。还有一个符号常量localparam,它和parameter的区别在于,parameter可以被外部调用模块改变,而localparam仅在本模块内部有效。

    4、assign语句是连续赋值的意思。加法器是一个组合电路,当输入变化时,输出立即响应,而且这个过程是持续不断的。

    5、对于{cout,sum}的理解:这是一种对两个变量合并赋值的简化描述,HDL语法解析器和综合器按照下面的理解对上述描述进行解析,并生成电路:

    wire[N:0] adder_temp;
    //假设assgin {cout,sum}=adder_temp[N:0];
    assign cout=adder_temp[N];
    assign sum[N-1:0]=adder_temp[N-1:0];
  • 相关阅读:
    API接口智能化测试探索与实践
    程序员的社会地位
    程序员五六年能存100万,你说你焦虑个啥!!!
    苹果公司宣布:公司内部的员工有权讨论自己的工作条件和薪酬
    男子股票账户突然多了一个亿!结果……
    你选择双休还是单休?
    PAL制式和NTSC制式的定义及区别(转)
    javascript入门系列演示·三种弹出对话框的用法实例(转)
    sink相关
    Ubuntu下安装gsteditor
  • 原文地址:https://www.cnblogs.com/litifeng/p/8516513.html
Copyright © 2011-2022 走看看