/**************************************
* Module: assign
* Date:2014-08-10
* Author: hemmingway@163.com
*
* Description: verilog中的assign语句的用法
***************************************//*
一、引入语法的概念1、只有寄存器类型的信号才可以在always和initial 语句中进行赋值,类型定义通过reg语句实现。2、always 语句是一直重复执行,由敏感表(always 语句括号内的变量)中的变量触发。3、always 语句从0 时刻开始。4、在begin 和end 之间的语句是顺序执行,属于串行语句。
*/// assign 语句的用法
module  test;// 1.作为信号量输出,通过寄存器连续赋值
output [3:0] oLED;        // 默认是wire类型,需要持续输出才行//internal signal
reg [3:0] sr_LED; //用独热码表示LED亮灯位置。assign  oLED[3:0] = ~sr_LED[3:0]; //向LED灯接口输出信号。//2.作为信号量输出,通过寄存器拼接数据位实现。output [15: 0] oSI_DATA;//internal signalreg [ 3: 0] s_HEX;reg [ 7: 0] s_SEGBINARY; // s_SEGBINARY[2] should be the DOTreg [ 3: 0] s_SEG_SEL;assign oSI_DATA = {iLED_SEL,s_SEG_SEL,s_SEGBINARY};//3.作为信号量输出,通过判断条件,赋值给信号output[ 1: 0]   oSEG_STATE;
output          oCP_PLUSE;
wire            s_CNTEQCYCLE; parameter PARAM_7SEG_CYCLE = 32'd2500000;reg [ 1: 0] sr_SEG_STATE;
reg [31: 0] sr_cnt;
reg         sr_cp_pluse;
assign oSEG_STATE = sr_SEG_STATE;
assign oCP_PLUSE = sr_cp_pluse;
assign s_CNTEQCYCLE = ( sr_cnt == PARAM_7SEG_CYCLE ) ? 1 : 0;//4.作为输出信号量,通过输入信号量赋值给输出,同样可以输入信号量和寄存器组合逻辑,赋值给输出信号量。
input        iCLK50M;
input        iCP_PULSE;
input[15:0]  iSI_DATA;
output       oSI;
output       oCP;
reg [ 3: 0] sr_cnt;
reg [15: 0] sr_si_data;
reg sr_cp;
reg sr_en;
assign oSI = sr_si_data[15];
assign oCP = sr_en & iCLK50M;endmodule//
//
//
// 下面是功能相同但写法不同的两段代码:
// 第一段A
module assign_test_a (clk,lhold,lholda
);
input clk;
input lhold;
output lholda;      // 将输出定义为reg类型, 不用assign来持续输出了
reg lholda;always @(posedge clk)
if (lhold)lholda<=lhold;
elselholda<=0;endmodule// 第二段B
module assign_test_b (clk,lhold,lholda
);
input clk;
input lhold;
output lholda;        // 默认是wire类型的
reg lholda_r;         // 定义一个内部的reg变量,always @(posedge clk)if (lhold)lholda_r<=lhold;elselholda_r<=0;assign  lholda=lholda_r;       // 进行持续赋值输出endmodule// 分析
/*从实用角度来说,这里的意义比较大。当内部有多个信号需要输出,可是输出引脚只有一个,那么这时就可以进行选择。如下:
assign  lholda= (条件)? (lholda_ra): lholda_rb;  可以嵌套使用。或者在这种情况下也非常有用。Lholda 与 内部的reg输出lholda_ra, lholda_rb,…., 存在逻辑函数关系
*/

verilog中assign语句相关推荐

  1. verilog中generate语句的使用

    原文地址:https://blog.csdn.net/qq_38428056/article/details/84821982 至芯科技的书上看到的,觉得还行吧,给大家分享一下. 一.为什么学习gen ...

  2. Verilog中assign的使用

    assign相当于连线,一般是将一个变量的值不间断地赋值给另一个变量,就像把这两个变量连在一起,所以习惯性的当做连线用,比如把一个模块的输出给另一个模块当输入. assign的功能属于组合逻辑的范畴, ...

  3. verilog中for语句使用

     在C语言中,经常用到for循环语句,但在硬件描述语言中for语句的使用较C语言等软件描述语言有较大的区别. 在Verilog中除了在Testbench(仿真测试激励)中使用for循环语句外,在T ...

  4. Verilog中for语句的使用

    在C语言中,经常用到for循环语句,但在硬件描述语言中for语句的使用较C语言等软件描述语言有较大的区别. 在Verilog中除了在Testbench(仿真测试激励)中使用for循环语句外,在Test ...

  5. Verilog中for 语句怎么用

    类似C的环路结构如for-loop可能对学过C语言的人存在陷阱.其原因是在硬件语言中并没有隐含的寄存器这个条件,所以一般这些环路不可以在可综合代码中用来做算法迭代.在Verilog中,for循环一般用 ...

  6. Verilog中生成语句(generate)的用法

    一:generate Verilog-2001添加了generate循环,允许产生module和primitive的多个实例化,同时也可以产生多个variable,net,task,function, ...

  7. verilog中assign和always@(*)的区别和易忽略的点

    今天在做IC的模块验证时,发现某个模块的输出信号为x态,一般遇到x态首先思考以下几种情况: 变量未进行初始化 多个相同驱动强度的信号同时驱动1和0 代码中直接赋值的x态 如果是PAD电路上的X态,则另 ...

  8. Verilog中generate语句的用法

    在Verilog-2001中新增了语句generate,通过generate循环,可以产生一个对象(比如一个元件或者是一个模块)的多次例化,为可变尺度的设计提供了方便,generate语句一般在循环和 ...

  9. Verilog中Case语句

    实际问题中常常需要用到多分支选择,使用if语句导致内容繁琐:更明智的做法是使用case语句,case语句是一种多分支选择语句,可以方便的处理多分支选择.本文通过实际例子,讲解case语句的使用,以及c ...

最新文章

  1. Docker报错 WARNING: IPv4 forwarding is disabled. Networking will not work.
  2. Linux驱动技术(六) _内核中断
  3. mysql数据库 set类型_MYSQL数据库数据类型
  4. 每个叶子节点(nil)是黑色。_填充每个节点的下一个右侧节点指针
  5. java自行车s码适合身高_捷安特s码适合多高
  6. 迈克菲实验室:Flame病毒的深度分析
  7. 输入n个整数,输出其中最小的k个
  8. 高并发业务接口开发思路(实战)
  9. 局域网管理软件有哪些_考勤系统软件有哪些你知道吗
  10. java过滤器是用来干什么的_java过滤器有什么作用
  11. python虚拟环境(三大神器之virtualenv) 入门
  12. 这也许是史上最有趣的破解软件合集
  13. 计算机性能和拷机软件
  14. ReactOS的SVN服务器
  15. 2019年十大让人欲罢不能的消费潮流 | 财见年终观察
  16. python读取usb数据显示_在python中从各种usb设备读取和存储各种数据
  17. 英语学习中总结的阅读、段落匹配、选词填空技巧
  18. 域名解析错误怎么办?
  19. Linux入门,RTFM阅读那该死的手册
  20. 苹果4是android吗,呵呵!原来苹果手机有这么多缺点,你想换安卓吗?

热门文章

  1. 微软MCP之SharePoint2007考试试题(Microsoft 70-542)
  2. 路由器的基本配置--荣新IT培训带给我的......(三)
  3. c语言五子棋代码_基于控制台的C语言贪吃蛇
  4. 将图的广度优先遍历在邻接矩阵和邻接表存储结构上分别实现_图解:什么是“图”?
  5. oracle编写备份数据库代码,oracle_oracle数据库创建备份与恢复脚本整理,1:创建用户 复制代码 代码如 - phpStudy...
  6. login组件的两种用法_vue2组件系列第四十节:NoticeBar 通告栏
  7. mysql中的编码问题_mysql存储乱码之编码问题
  8. java清屏_【图片】请问java编写中如何做到清屏啊。。。_java吧_百度贴吧
  9. [CQOI2009]叶子的染色(树形dp)
  10. java程序员第二语言_惊呆了!Java程序员最常犯的错竟然是这10个