【Verilog 教程】3.1 Verilog 连续赋值

2023-09-21 23:42:24

关键词:assign, 全加器
连续赋值语句是 Verilog 数据流建模的基本语句,用于对 wire 型变量进行赋值。:

格式如下

assign     LHS_target = RHS_expression  ;

LHS(left hand side) 指赋值操作的左侧,RHS(right hand side)指赋值操作的右侧。

assign 为关键词,任何已经声明 wire 变量的连续赋值语句都是以 assign 开头,例如:

wire      Cout, A, B ;
assign    Cout  = A & B ;     //实现计算A与B的功能

需要说明的是:

LHS_target 必须是一个标量或者线型向量,而不能是寄存器类型。
RHS_expression 的类型没有要求,可以是标量或线型或存器向量,也可以是函数调用。
只要 RHS_expression 表达式的操作数有事件发生(值的变化)时,RHS_expression 就会立刻重新计算,同时赋值给 LHS_target。
Verilog 还提供了另一种对 wire 型赋值的简单方法,即在 wire 型变量声明的时候同时对其赋值。wire 型变量只能被赋值一次,因此该种连续赋值方式也只能有一次。例如下面赋值方式和上面的赋值例子的赋值方式,效果都是一致的

wire      A, B ;
wire      Cout = A & B ;

全加器

下面采用数据流描述方式,来设计一个 1bit 全加器。

设 Ai,Bi,Ci 分别为被加数、加数和相邻低位的进位数,So, Co 分别为本位和与向相邻高位的进位数。

真值表如下:
在这里插入图片描述
全加器的表达式为:

So = Ai ⊕ Bi ⊕ Ci ;
Co = AiBi + Ci(Ai+Bi)
module full_adder1(
    input    Ai, Bi, Ci,
    output   So, Co);
 
    assign So = Ai ^ Bi ^ Ci ;
    assign Co = (Ai & Bi) | (Ci & (Ai | Bi));
endmodule

当然,更为贴近加法器的代码描述可以为:

module full_adder1(
    input    Ai, Bi, Ci
    output   So, Co);
 
    assign {Co, So} = Ai + Bi + Ci ;
endmodule

testbench(test.sv)参考如下:

`timescale 1ns/1ns
 
module test ;
    reg Ai, Bi, Ci ;
    wire So, Co ;
 
    initial begin
        {Ai, Bi, Ci}      = 3'b0;
        forever begin
            #10 ;
            {Ai, Bi, Ci}      = {Ai, Bi, Ci} + 1'b1;
        end
    end
 
    full_adder1  u_adder(
        .Ai      (Ai),
        .Bi      (Bi),
        .Ci      (Ci),
        .So      (So),
        .Co      (Co));
 
    initial begin
        forever begin
            #100;
            //$display("---gyc---%d", $time);
            if ($time >= 1000) begin
            $finish ;
            end
        end
    end
 
 endmodule

仿真如下:
在这里插入图片描述

更多推荐

CSS的var()函数用法与JS获取css函数变量值的方法

项目场景我们常在项目里见到这种写法。<template><divid="dashboardLayout":style="styleCSSVariable"></div></template>可以看到,根元素这里使用了一个名为styleCSSVariable的CSS集。这里的实现是:getstyleCSSVariable

机器视觉检测在流水线上的技术应用

机器视觉在流水线上的应用机器视觉系统的主要功能可以简单概括为:定位、识别、测量、缺陷检测等。相对于人工或传统机械方式而言,机器视觉系统具有速度快、精度高、准确性高等一系列优点。随着工业现代化发展,机器视觉已经广泛应用于各大领域。为企业及用户提供更优的产品品质及完美解决方案。流水线视觉检测是机器视觉应用最多的场合,流水线

视觉检测系统可以检测太阳能电池片哪些方面的缺陷?

近年来,随着全球工业化进程的不断加快,能源与环境危机成为一个亟待解决的问题。为此,太阳能作为一种清洁可再生的能源,现已被广泛应用于各领域。太阳能电池片作为太阳能转换为电能的核心载体,其质量的好坏决定着电能的转换效率。在从硅片到太阳能电池片的生产过程中会产生污点、破损等各种缺陷,需要进行多重检测工序。手动检测效率低下,容

unordered_set和unordered_map的封装

目录一、前言二、容器的使用1、unordered_map2、unordered_set​编辑三、哈希表的改造1、结点2、哈希表的迭代器*构造函数*重载**重载->*重载++*重载!=和==3、哈希表的析构4、unordered_map的[]实现5、修改后的哈希表四、unordered_set的实现五、unordered

NSS [NISACTF 2022]is secret

NSS[NISACTF2022]issecret原题是[CISCN2019_华东南赛区]Double_Secret开题蒙蔽。猜测是/secret路由,猜对了。GET提交参数?secret=1,这里应该是一个注入点。看了一下network,后端语言是python2,不确定是哪种漏洞,所有想到的都测一遍,最后在测SSTI时

【2023年11月第四版教材】第14章《沟通管理》(第二部分)

第14章《沟通管理》(第二部分)4规划沟通管理4.1规划沟通管理4.2沟通技术4.3沟通模型4.4沟通方法★★★(22下案例)4.5人际关系与团队技能4.6沟通管理计划★★★(18下44)(13上论文)(22下案例)5管理沟通5.1管理沟通5.2沟通技能5.3人际关系与团队技能6监督沟通6.1监督沟通★★★6.2人际关

Tomcat架构设计及组件详解

继Tomcat配置详解(Tomcat配置server.xml详解)Tomcat配置详解(Tomcat配置server.xml详解)_tomcatxml配置https://blog.csdn.net/imwucx/article/details/132166738文章之后,深入的学习tomcat相关知识,对Tomcat的

自动驾驶中的决策规划

参考:【干货篇】轻舟智航:自动驾驶中的决策规划技术(附视频回放+PPT下载)-AIQ如图所示,各模块介绍定位模块主要负责解答的问题是“车现在在哪里”,是在道路上还是在路口,是在高架桥上还是在停车场里。感知模块则负责解答“车周围有什么”这个问题。预测模块,预测模块主要解答“周围的车现在想干什么”,比如前面的车要cutin

全流程HEC-RAS 1D/2D水动力与水环境模拟丨恒定流模型(1D/2D)、一维非恒定流、二维非恒定流模型、HEC-RAS水质模型

目录​专题一​水动力模型基础专题二恒定流模型(1D/2D)专题三一维非恒定流专题四二维非恒定流模型(一)专题五二维非恒定流模型(二)专题六HEC-RAS的水质模型专题七高级主题更多应用水动力与水环境模型的数值模拟是实现水资源规划、环境影响分析、防洪规划以及未来气候变化下预测和分析的主要手段。然而,一方面水动力和水环境模

3D点云目标检测:Centerformer训练waymo数据集

一、环境准备项目地址:centerformer1.0、基础环境python==3.8.0torch==1.9.1+cu111waymo-open-dataset-tf-2-6-0==1.4.9spconv==1.2.1其余按照requirement.txt里安装就行pipinstall-ihttps://pypi.tu

用微服务平台框架,实现高效的流程化办公!

想要实现流程化办公,可以用什么样的软件平台实现?随着市场竞争越来越激烈,很多企业会采用低代码技术平台实现高效管理企业的内部资源,从而减少很多繁琐工作和时间,实现提质增效的目的。流辰信息助力大家采用微服务平台框架低代码技术平台打破信息孤岛,创造高效办公。低代码的便捷性和灵活性就不言而喻了,它在企业的发展过程中扮演了非常重

热文推荐