参数化

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 )                      

'b1??? : high_lvl = 3;              

'b01?? : high_lvl = 2;              

'b001? : high_lev = 1;              

'b0001 : high_lel = 0;              

default : high_lev = ;              

endcase   
//if encoder = 4'b1z0x,then high_lvl = 3
casex(encoder )                      

'b1xxx: high_lvl = 3;               

'b01xx: high_lvl = 2;               

'b001x: high_lvl = 1;               

'b0001: high_lvl = 0;               

default: high_lvl = ;               

endcase                              

if encoder = 'b1z0x,then high_lvl = 3

For Loop

always @( inp,cnt)begin                      

    result[:] = ;                         

    result[:] = inp;                       

    if( cnt ==  )begin                      

        for( i = ; i <= ;i = i + ) begin  

            result[i] = result[i-];         

        end                                  

        result[:] = ;                     

    end                                      

end         

同步与异步

同步预设和清除

D触发器

时钟使能(Clock Enable)

两类子程序

函数

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

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

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

任务

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

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

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

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

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

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

verilog基础--altera培训的更多相关文章

  1. 【第一季】CH06_FPGA设计Verilog基础(三)

    [第一季]CH06_FPGA设计Verilog基础(三) 一个完整的设计,除了好的功能描述代码,对于程序的仿真验证是必不可少的.学会如何去验证自己所写的程序,即如何调试自己的程序是一件非常重要的事情. ...

  2. 【第一季】CH05_FPGA设计Verilog基础(二)Enter a post title

    [第一季]CH05_FPGA设计Verilog基础(二) 5.1状态机设计 状态机是许多数字系统的核心部件,是一类重要的时序逻辑电路.通常包括三个部分:一是下一个状态的逻辑电路,二是存储状态机当前状态 ...

  3. 【第一季】CH04_FPGA设计Verilog基础(一)Enter a post title

    [第一季]CH04_FPGA设计Verilog基础(一) 4.1 Verilog HDL 代码规范 u 项目构架设计 项目的构架用于团队的沟通,以及项目设计的全局把控 u 接口时序设计规范 模块和模块 ...

  4. Altera培训SignalTap II的使用--笔记

    培训的内容有点多(啰嗦)(笔记为截图) 听课笔记:Altera培训SignalTap II的使用--笔记

  5. Verilog基础入门——Vivado工程创建(三)

    Verilog基础入门--Vivado工程创建(三) Vivado是Verilog语言的一个集成环境,目前使用的版本为英文版,简单介绍一下在Vivado中创建一个工程并写入源文件 [配置] win10 ...

  6. System Verilog基础(二)

    这一篇笔记主要记录Procedural,Process,Task and function,Interface和Communication中值得注意的点. 1.Procedural 写testbenc ...

  7. Verilog 基础回顾 (一)

    Verilog 大小写敏感,且所有关键字都是小写 1  寄存器 register = storage,是数据存储单元的抽象,可视为能够存储数值的变量 (variable that can hold v ...

  8. System Verilog基础(一)

    学习文本值和基本数据类型的笔记. 1.常量(Literal Value) 1.1.整型常量 例如:8‘b0 32'd0 '0 '1 'x 'z 省略位宽则意味着全位宽都被赋值. 例如: :] sig1 ...

  9. verilog 基础知识

    mealy型状态机的下一状态和输出取决于当前状态和当前输入: moore型状态机的下一状态和输出取决于当前状态和当前输入,但其输出仅取决于现在的状态: 基本门原语的输出端口必须写在端口列表的前面,基本 ...

随机推荐

  1. Git----分支管理之创建与合并分支02

    在版本回退里,你已经知道 ,每次提交,Git都把它们串i成一条时间线,这条时间线就是一个分支,截至到目前,只有一条时间线,在Git里,这个分支叫主分支,即master分支,HEAD严格来说不是指向提交 ...

  2. Haskell语言学习笔记(33)Exception, Except, ExceptT

    Exception class (Typeable e, Show e) => Exception e where toException :: e -> SomeException fr ...

  3. 通过Roslyn构建自己的C#脚本(更新版)(转)

      http://www.cnblogs.com/TianFang/p/6939723.html   之前写过文章介绍过如何通过Roslyn构建自己的C#脚本,但那篇文章是参考自Roslyn CTP版 ...

  4. 吴裕雄 python神经网络 水果图片识别(2)

    import osimport numpy as npimport matplotlib.pyplot as pltfrom skimage import color,data,transform,i ...

  5. node集成mysql——pool连接池

    安装 mysql npm install mysql or cnpm install mysql 创建db.js,实现mysql操作模块 var mysql = require('mysql'); v ...

  6. triton,docker,mesos

    triton user: jill /root/.sdc/docker/jill 下 root@1f6af9d8-8ed9-e940-9c6c-d9505ca25896:~/.sdc/docker/j ...

  7. conductor 事件处理程序

    Introduction conductor中的事件提供工作流之间的松散耦合,并支持从外部系统生成和消耗事件. 包括: 1. 能够在外部系统像SQS或Conductor内部生成一个事件(消息). 2. ...

  8. JAVA——遍历

    关于遍历,发现了个坑. 详见如下: package com.fxl.test; import java.util.ArrayList; import java.util.Iterator; impor ...

  9. 学习C++50条忠告

    1.把C++当成一门新的语言学习: 2.看<Thinking In C++>,不要看<C++变成死相>: 3.看<The C++ Programming Language ...

  10. MyBatis配置数据源的两种方式

    ---------------------siwuxie095                                     MyBatis 配置数据源的两种方式         1.配置方 ...