• verilog基础--altera培训


    参数化

    Localparam :与prameter一样,但不能被重写。

    Verilog-2001 格式,

    module mult_acc

        #(parameter size = 8 )

        (...);

    数字格式:size、tick、letter和实际数字本身。

    可以增加s,表示数字的符号或者2元互补。

    Signed(‘s’or ‘S’) 16’shFA = -16’h06

    负数:

    -8‘d3

    算术运算符:

     

    逐位运算符:

     

    Ain&cin = 3’b000

     Reduction操作:将矢量缩短为一个比特

    关系运算符:

     

    如果任何一个运算符含有‘Z’或者‘X’,结果都是不可知的。

    相等运算符:

     

    Equality运算符只支持‘1’和‘0’,如果有Z或X,结果是不可知的。

    Case Equality支持所有数值的对比。X和Z被认为完全不同的数值,必须完全匹配。通常用于仿真环境。

    逻辑运算符:

     

    支持一元或者二进制。

    返回一个比特。

    如果’Z’或者’X’出现在操作数中,将导致结果不可知。

    移位运算符:

     

    左移:空位填充。

    右移:逻辑和算术无符号移位被0填充,算术有有符号移位以符号位填充。

    条件运算符、连接运算符和复制运算符。

     

    运算符优先级:

     

    Always 和Initial 进程中有两类分配,Blocking和Nonblocking。

    敏感度表

    Always @( a,b,sel)

    always@ *

    *是对所有输入的简写。

    case声明会把X和Z当做逻辑什,将基与条件列表中的X和Z对比。问号字符表示不重要。

    casez声明把表达式或者条件中的所有Z值当作不重要。

    casex把X和Z值当做不重要,面是不是逻辑值

    casez(encoder )                      
    
    4'b1??? : high_lvl = 3;              
    
    4'b01?? : high_lvl = 2;              
    
    4'b001? : high_lev = 1;              
    
    4'b0001 : high_lel = 0;              
    
    default : high_lev = 0;              
    
    endcase   
    //if encoder = 4'b1z0x,then high_lvl = 3

      

    casex(encoder )                      
    
    4'b1xxx: high_lvl = 3;               
    
    4'b01xx: high_lvl = 2;               
    
    4'b001x: high_lvl = 1;               
    
    4'b0001: high_lvl = 0;               
    
    default: high_lvl = 0;               
    
    endcase                              
    
    if encoder = 4'b1z0x,then high_lvl = 3
    
     

                                       

    For Loop

    always @( inp,cnt)begin                      
    
        result[7:4] = 0;                         
    
        result[3:0] = inp;                       
    
        if( cnt == 1 )begin                      
    
            for( i = 4; i <= 7;i = i + 1) begin  
    
                result[i] = result[i-4];         
    
            end                                  
    
            result[3:0] = 0;                     
    
        end                                      
    
    end         

                                     

                                                 

     

    同步与异步

    同步预设和清除

     

    D触发器

    时钟使能(Clock Enable)

     

    两类子程序

    函数

     

      由上面的逻辑左移只可以看出左移之后高位截取掉了。但上面的程序中r = r + b << i中,b是8位要进行先

    移位再求和的操作,但乘法运算中高位是肯定没有截取的。所以个人认为在运算中,是以位宽最宽的为基础进行

    运算的,也就是把8位扩展到了16位来运算。

    任务

    1) 函数返回分配给函数名称的数值,因此函数中的最后一次运算通常会把一个数值分配给函数名。

    2) 函数只能调用其他函数,而任务可以调用函数或者任务

    3) 函数是组合逻辑,而任务没有这一限制

    4) 函数至少要有一路输入,任务不需要有任何输入,但是可以有

    5) 函数必须恰好返回一个变量,任务可以返回0,或者使用输出变量的更多变量

    6) 函数不能有in-out或者output变量

  • 相关阅读:
    色彩空间RGB/CMYK/HSL/HSB/HSV/Lab/YUV基础理论及转换方法:RGB与YUV
    三色视者与四色视者身后的理论基础:色彩原理
    再谈设计原则—7种设计原则学习总结笔记
    sass安装:webpack sass编译失败,node-sass安装失败的终极解决方
    再谈Java数据结构—分析底层实现与应用注意事项
    再谈js对象数据结构底层实现原理-object array map set
    浮点数精度问题透析:小数计算不准确+浮点数精度丢失根源
    再谈编程范式—程序语言背后的思想
    再谈循环&迭代&回溯&递归&递推这些基本概念
    再谈MV*(MVVM MVP MVC)模式的设计原理—封装与解耦
  • 原文地址:https://www.cnblogs.com/zhongguo135/p/6323414.html
Copyright © 2020-2023  润新知