4.8 Verilog过程连续赋值

关键词:解除分配,强制,释放

过程连续赋值是过程赋值的一种。赋值语句能够替换其他所有wire 或 reg 的赋值,改写wire 或 reg 类型变量的当前值。

与过程赋值不同的是,过程连续赋值表达式能被连续的驱动到wire 或 reg 类型变量中,即过程连续赋值发生作用时,右端表达式中任意操作数的变化都会引起过程连续赋值语句的重新执行。

过程连续性分配主要有2种,分配-取消分配和强制-释放。

分配、取消分配

分配(过程赋值操作)与取消分配(取消过程赋值操作)表示第一类过程连续赋值语句。赋值对象只能是注册或注册组,而不能是线型变量。

分配过程中对分配的连续分配,分配过程中的值被保留直到被重新分配。

例如,一个带解密端的 D 触发器可以用下面的代码描述:

实例

模块dff_normal (
    输入       rstn 、
    输入       clk 、
    输入       D 、
    输出 reg  Q
 );

    总是 @ ( posege clk或 negedge rstn ) begin
        if ( ! rstn ) begin   //复位后 Q = 0 有效
            Q <= 1'b0 ;
        结束
        否则 开始
            Q <= D ;       //Q = D 位于时钟端
        end
    endmodule

的posege 处  

下面,用分配与取消分配改写,完成相同的功能。

即在复位信号为0时,Q端被分配语句赋值,首先输出为0。

复位信号为1时,Q端被取消分配语句取消分配,在时钟上升沿被重新分配分配。

实例

模块dff_assign (
    输入       rstn 、
    输入       clk 、
    输入       D 、
    输出 reg  Q
 );
 
    总是 @ ( posege clk ) 开始
        Q <= D ;       //Q = D 在时钟结束的 posege 处总是@ ( negedge rstn ) begin if ( ! rstn ) begin赋值Q = 1'b0 ; //复位时改变Q值有效end else begin //取消Q值叠加,取消分配Q ; //Q 保持 0 值,直到时钟脉冲到来end end endmodule

施力、释放

force(强制操作赋值)与release(取消强制赋值)表示第二类过程连续赋值语句。

但使用方法和效果,和分配与取消分配类似,赋值对象可以是reg型变量,也可以是wire型变量。

由于是无条件强制赋值,一般多用于吸附过程,不要在设计模块中使用。

当强制作用在寄存器上时,寄存器当前值被覆盖;释放时寄存器值将继续保留强制赋值时的值。之后,该寄存器的值可以被原来的过程语句赋值改变。

当强制作用在线网上时,线网型变量被强制。但是,一旦释放线网型变量,其值马上改为原来的驱动值。

为观察观察两个类型变量强制赋值的区别,利用第一节中的元素计数器10作为设计模块,测试台设计如下。

实例

`时标 1ns / 1ns
 
模块测试;
    注册          rstn ;
    寄存器          时钟;
    reg [ 3 : 0 ]    cnt ;
    线         输出;
 
    counter10 u_counter (
        .rstn     ( rstn ) 、.
        clk     ( clk ) 、.
        cnt     ( cnt ) 、.
        cout     ( cout ) ) ;
 
    初始 开始
        时钟       = 0 ;
        rstn       = 0 ;
        # 10 ;
        rstn       = 1'b1 ;
        等待 ( test.u_counter.cnt_temp == 4'd4 ) ;
        @ (negedge时钟) ;
        强制     test.u_counter.cnt_temp = 4'd6 ;
        强制     test.u_counter.cout     = 1'b1 ;
        # 40 ;
        @ (negedge时钟) ;
        释放   test.u_counter.cnt_temp ;
        释放   test.u_counter.cout ;
    结束
 
    初始 开始
        clk = 0 ;
        永远 # 10 clk = ~ clk ;
    end
 
    //完成模拟
    always begin
        # 1000 ;
        if ( $time >= 1000 ) $finish ;
    结束
 
模块 // 测试

仿真结果如下。

由图可知,在 cnt_temp 等于 4 时(80ns), cnt_temp 被强制赋值为 6,cout 被强制赋值为 1。

释放时(120ns), cnt_temp 为寄存器类型,仍然保持原有值不变,直到时钟上升沿由此进行加法赋值操作,值才等于 7 。

120ns 时,由于 cout 是线网型变量,其值不能保存。原码 counter10 模型中而存在语句驱动:allocate cout = (cnt_temp==4'd9),所以 cout 值等于 0 。

源码下载:Verilog过程连续赋值源码免费下载

希望你也学会了,更多编程源码模板请来二当家的素材网:https://www.erdangjiade.com

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/405479.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

苹果发布iPhone 16:革命性创新重新定义智能手机体验

&#xff08;苹果总部&#xff0c;加利福尼亚州&#xff0c;2024年2月23日&#xff09;——今天&#xff0c;全球领先的科技公司苹果公司再次震撼世界&#xff0c;宣布推出iPhone 16&#xff0c;这款革命性的智能手机重新定义了人们对于手机的期望和体验。 iPhone 16的发布代表…

基于R语言地理加权回归、主成份分析、判别分析等空间异质性数据分析

在自然和社会科学领域有大量与地理或空间有关的数据&#xff0c;这一类数据一般具有严重的空间异质性&#xff0c;而通常的统计学方法并不能处理空间异质性&#xff0c;因而对此类型的数据无能为力。以地理加权回归为基础的一系列方法&#xff1a;经典地理加权回归&#xff0c;…

DM数据库学习之路(十八)DMHS数据实时同步软件部署及迁移测试

​​​​​ DMDRS介绍 产品介绍 达梦数据实时同步软件&#xff08;以下简称 DMDRS&#xff09;是支持异构环境的高性能、高可靠、高可扩展数据库实时同步复制系统。该产品采用基于日志的结构化数据复制技术&#xff0c;不依赖主机上源数据库的触发器或者规则&#xff0c;对主…

【SpringCloudAlibaba系列--nacos配置中心】

Nacos做注册中心以及使用docker部署nacos集群的博客在这&#xff1a; 容器化部署Nacos&#xff1a;从环境准备到启动 容器化nacos部署并实现服务发现(gradle) 使用docker部署nacos分布式集群 下面介绍如何使用nacos做配置中心 首先要进行nacos-config的引入&#xff0c;引入…

【前端素材】推荐优质后台管理系统Modernize平台模板(附源码)

一、需求分析 后台管理系统是一种用于管理和控制网站、应用程序或系统后台操作的软件工具&#xff0c;通常由授权用户&#xff08;如管理员、编辑人员等&#xff09;使用。它提供了一种用户友好的方式来管理网站或应用程序的内容、用户、数据等方面的操作&#xff0c;并且通常…

kafka为什么性能这么高?

Kafka系统架构 Kafka是一个分布式流处理平台&#xff0c;具有高性能和可伸缩性的特点。它使用了一些关键的设计原则和技术&#xff0c;以实现其高性能。 上图是Kafka的架构图&#xff0c;Producer生产消息&#xff0c;以Partition的维度&#xff0c;按照一定的路由策略&#x…

康威生命游戏

康威生命游戏 康威生命游戏(Conway’s Game of Life)是康威发明的细胞自动机。 生命游戏有几个简单的规则&#xff1a; 细胞有两种状态&#xff0c;存活或死亡&#xff0c;每个细胞以自身为中心与周围的八格细胞互动。 对于存活的细胞&#xff1a; 当周围的细胞过少(<2)或…

【vue】如何打开别人编译后的vue项目

文件结构如下&#xff0c;编译后的文件放在dist中。 dist的文件结构大约如下&#xff0c;文件名称随项目 1.新建app.js文件 const express require(express);const app express();const port 8080;app.use(express.static(dist));app.listen(port, () > console.log); …

密评技术要求实施详解:每一步都关键

密评简介 密评定义&#xff1a;全称商用密码应用安全性评估, 是对采用商用密码技术、产品和服务集成建设的网络和信息系统密码应用的合规性、正确性、有效性进行评估的活动。 评测依据&#xff1a;GB/T 39786-2021《信息安全技术 信息系统密码应用基本要求》。 密评对象&…

智能高压森林应急消防泵|保障森林安全|深圳恒峰

随着科技的不断发展&#xff0c;我们的生活质量得到了显著提升。在森林保护领域&#xff0c;一项创新技术正在发挥着关键作用——智能高压森林应急消防泵。这种设备不仅提高了灭火效率&#xff0c;更为森林资源的安全保驾护航。 在过去&#xff0c;面对森林火灾&#xff0c;消防…

鸿蒙DevEco Service开发准备与使用

DevEco低代码是一个基于Serverless和ArkUI的端云一体化低代码开发平台&#xff0c;可通过拖拽式开发&#xff0c;可视化配置构建元服务。打通HarmonyOS云侧与端侧能力&#xff0c;轻松实现HMS Core和AGC Serverless能力的调用。通过与元服务生态、HMS Core、AGC Serverless平台…

python统计分析——线性模型的预测和评估

参考资料&#xff1a;用python动手学统计学 1、导入库 # 导入库 # 导入数据处理的库 import numpy as np import pandas as pd import scipy as sp from scipy import stats # 导入绘图的库 from matplotlib import pyplot as plt import seaborn as sns sns.set() # 导入估计…

亚马逊,速卖通,国际站测评补单的必要性与方法

亚马逊平台的规则与某宝有所不同。亚马逊平台没有产品推广引流和直通车等功能。而且&#xff0c;与某宝不同的是&#xff0c;亚马逊平台没有广告位和卖家客服。在某宝上&#xff0c;当我们选择款式和颜色时&#xff0c;通常会与卖家客服进行沟通。但在亚马逊上&#xff0c;没有…

【Docker】免费使用的腾讯云容器镜像服务

需要云服务器等云产品来学习Linux可以移步/-->腾讯云<--/官网&#xff0c;轻量型云服务器低至112元/年&#xff0c;新用户首次下单享超低折扣。 目录 1、设置密码 2、登录实例&#xff08;sudo docker login xxxxxx&#xff09; 3、新建命名空间&#xff08;每个命名空…

day40打卡

day40打卡 343. 整数拆分 状态表示 ​ dp[i] 表示将正整数i拆分成至少两个正整数的和之后&#xff0c;这些正整数的最大乘积 状态转移方程 ​ i > 2 时&#xff0c;对正整数i拆出的第一个正整数是j&#xff0c;则有&#xff1a; 将i拆分为 j 和 i-j&#xff0c;且 i-j…

初探Web客户端追踪技术

前言 案例1 当我们首次浏览网站时&#xff0c;在网页的下方位置经常会出现提示&#xff0c;询问是否允许使用 Cookie 来提供服务和流量。为了不被挡住浏览的内容&#xff0c;我们经常会下意识地点击“接受”&#xff0c;然后继续浏览。看似无害而有害增强你在这个网站上的体验…

MATLAB | 超多样式聚类分析树状图任你选择~~

这几天写了一个代码很长的聚类分析树状图绘图工具函数&#xff08;上一期文章立的flag总算实现了&#xff09;&#xff0c;能够比较轻松的绘制以下图形&#xff1a; 工具基本已经成型了&#xff0c;未来有需求未来有空再加哈哈哈&#xff0c;要求MATLAB至少需要17b版本&#xf…

微服务篇之分布式事务

一、Seata架构 Seata事务管理中有三个重要的角色&#xff1a; TC (Transaction Coordinator) - 事务协调者&#xff1a;维护全局和分支事务的状态&#xff0c;协调全局事务提交或回滚。 TM (Transaction Manager) - 事务管理器&#xff1a;定义全局事务的范围、开始全局事务、…

Leetcode日记 2583. 二叉树中的第 K 大层和

Leetcode日记 2583. 二叉树中的第 K 大层和 题目&#xff1a;解题思路&#xff1a;代码实现制作不易&#xff0c;感谢三连&#xff0c;谢谢啦 题目&#xff1a; 给你一棵二叉树的根节点 root 和一个正整数 k 。 树中的 层和 是指 同一层 上节点值的总和。 返回树中第 k 大的层和…