【【简单systyem verilog 语言学习使用二--- 新adder加法器 】】

【【简单systyem verilog 语言学习使用二— 新adder加法器 】】

adder.v

module  addernew(input                          clk    ,input                          rst_n  ,input             [2 : 0]      in_a   ,input             [2 : 0]      in_b   ,input                          sel    ,   // 选择器output     reg    [4 : 0]      sum    ,output     reg    [4 : 0]      carry);always@(posedge  clk  or  negedge rst_n )beginif(rst_n == 0)begincarry <=  0  ;sum   <=  0  ; endelsebeginif( sel == 0)begin{carry,sum }  <=  in_a  + in_b  ;endelsebegin{carry,sum }  <=  in_a * in_b  ;endendendendmodule

adder_tb.sv

class input_0;static int count = 0;int id;logic [2:0] ina; // 与 in_a 和 in_b 一致的类型int arr[5] = '{1, 2, 3, 4, 5};// constructorfunction new();this.id = count++;endfunction// task to show valuestask showk();foreach (arr[i]) beginautomatic int k = arr[i];$write("%d\n", k);endendtask// function to run with inputfunction void run(int a);ina = a; // 直接赋值$display("ina number is %3d", ina);endfunction
endclassmodule test();input_0 inst_a, inst_b;logic clk;logic rst_n;logic sel;logic [2:0] in_a, in_b; // 使用 logic 代替 wirelogic [4:0] sum, carry;// Generate clockinitial beginclk = 0;forever #5 clk = ~clk;end// Adder module instantiationaddernew uadder (.clk(clk),.rst_n(rst_n),.in_a(in_a), // 从 in_a 获取值.in_b(in_b), // 从 in_b 获取值.sel(sel),.sum(sum),.carry(carry));initial beginrst_n = 0; // 初始化复位信号inst_a = new();inst_b = new();$display("inst_a id = %d", inst_a.id);$display("inst_b id = %d", inst_b.id);inst_a.showk();inst_b.showk();#10 rst_n = 1; // 释放复位信号sel = 1; // 选择信号inst_a.run(3); // 运行 inst_ainst_b.run(2); // 运行 inst_b// 赋值 in_a 和 in_bin_a = inst_a.ina; in_b = inst_b.ina; #105; // 等待一段时间// 打印结果$display("ina = %3d, inb = %3d, sel = %d, sum = %5d, carry = %5d",in_a, in_b, sel, sum, carry);$display("time = %t",$time);end
endmodule

在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!

相关文章

曲率定义与三维Mesh曲率估计

曲率定义与三维Mesh曲率估计 二维圆的曲率线的曲率 三维Patch fitting methodsNormal curvature-based methodsTensor averaging methods Estimating Curvatures and Their Derivatives on Triangle Meshes1. Per-Face Curvature Computation2. Coordinate System Transformati…

Dinky控制台:利用SSE技术实现实时日志监控与操作

1、前置知识 1.1 Dinky介绍 实时即未来,Dinky 为 Apache Flink 而生,让 Flink SQL 纵享丝滑。 Dinky 是一个开箱即用、易扩展,以 Apache Flink 为基础,连接 OLAP 和数据湖等众多框架的一站式实时计算平台,致力于流批一体和湖仓一体的探索与实践。 致力于简化Flink任务开…

无人机声学侦测算法详解!

一、算法原理 无人机在飞行过程中&#xff0c;其电机工作、旋翼震动以及气流扰动等都会产生一定程度的噪声。这些噪声具有独特的声学特征&#xff0c;如频率范围、时域和频域特性等&#xff0c;可以用于无人机的检测与识别。声学侦测算法利用这些特征&#xff0c;通过一系列步…

ABAP开发-12、Dialog屏幕开发_1

系列文章目录 文章目录 系列文章目录[TOC](文章目录) 前言一、Dialog屏幕概览二、界面1、界面-界面中的事件块2、界面-创建界面3、界面- 属性4、界面-元素清单5、界面-Screen Layout Designer6、界面- 参照创建7、界面- 常用关键字8、界面- 数据处理逻辑9、界面- Module执行顺序…

vue搭建项目之后的步骤操作

1.创建router文件夹&#xff08;里面创建index.js&#xff09;&#xff0c;创建views文件夹&#xff08;创建index页面&#xff09; 2.删除assets文件夹里面的内容&#xff0c;删除components文件夹 3.安装路由 npm install vue-router 4.router路由下面的index.js书写内容 …

w029基于springboot的网上购物商城系统研发

&#x1f64a;作者简介&#xff1a;拥有多年开发工作经验&#xff0c;分享技术代码帮助学生学习&#xff0c;独立完成自己的项目或者毕业设计。 代码可以查看文章末尾⬇️联系方式获取&#xff0c;记得注明来意哦~&#x1f339;赠送计算机毕业设计600个选题excel文件&#xff0…

底层视角看C语言

文章目录 main函数很普通main函数之前调用了什么main函数和自定义函数的对比 变量名只为人而存在goto是循环的本质指针变量指针是一个特殊的数字汇编层面看指针 数组和指针数组越界问题低端地址越界高端地址越界 引用就是指针 main函数很普通 main函数是第一个被调用的函数吗&…

Linux内核USB2.0驱动框架分析--USB设备枚举过程

一 USB特点 1.1 USB协议版本介绍&#xff1a; USB1.0/1.1&#xff08;low/fullspeed&#xff09;&#xff1a;传输速率最大为12Mbps&#xff0c;是较早的USB协议版本。 USB2.0&#xff08;highspeed&#xff09;&#xff1a;传输速率最大为480Mbps&#xff0c;相比USB1.0/1.1…

bert-base-uncased处理文档

1.安装必要的库 确保安装 transformers 和 torch 库&#xff1a; pip install transformers torch 2.加载本地 BERT 模型和分词器 由于已将模型和分词器下载到本地&#xff0c;可以指定文件路径加载。确保路径与本地文件结构一致。 from transformers import BertTokenizer…

【快速入门】Kafka的安装部署

目录 一、我的集群环境介绍 二、集群部署 1、解压安装包 2、修改解压后的文件名称 3、进入到/opt/installs/kafka3 目录&#xff0c;修改配置文件 4、分发安装包 5、分别在 bigdata02 和 bigdata03上修改配置文件 6、配置环境变量 7、启动集群 8、停止集群 三、本文用…

Windows安装tensorflow的GPU版本

前言 首先本文讨论的是windows系统&#xff0c;显卡是英伟达&#xff08;invida&#xff09;如何安装tensorflow-gpu。一共需要安装tensorflow-gpu、cuDNN、CUDA三个东西。其中CUDA是显卡的驱动库&#xff0c;cuDNN是深度学习加速库。 安装开始前&#xff0c;首先需要安装好c…

深度学习(神经网络)中模型的评估与性能度量

深度学习&#xff08;神经网络&#xff09;中模型的评估与性能度量 1.在现实任务中&#xff0c;我们往往有多种学习算法可供选择&#xff0c;那么我们如何评判一个模型的好坏呢&#xff1f;理想的解决方案是对模型的泛化误差进行评估&#xff0c;选择泛化误差最小的&#xff1…

mysql做数据统计图表常用的sql语句 部门人数 工龄 学历 年龄 性别 在职人员 兴趣分析查询

做统计有时候挺头疼的&#xff0c;sql改来改去还是达不到想要的效果&#xff0c;这里分享一下最近写的sql&#xff0c;感兴趣的朋友可以看看了解一下&#xff0c;sql语句代码都有注释。 这里只分享sql查询语句&#xff0c;前端图表用的是Echarts。 首先看一下统计的效果图 1、…

无人机之姿态融合算法篇

无人机的姿态融合算法是无人机飞行控制中的核心技术之一&#xff0c;它通过将来自不同传感器的数据进行融合&#xff0c;以实现更加精确、可靠的姿态检测。 一、传感器选择与数据预处理 无人机姿态融合算法通常依赖于多种传感器&#xff0c;包括加速度计、陀螺仪、磁力计等。这…

phpstudy 使用php8.2.9版本报错问题

phpstudy 使用php8.2.9版本报错问题 1、如果php8的扩展控制面板开启无效的话&#xff0c;可以手动开启试试 2、php有报错日志&#xff1a; Fatal error: Directive ‘track_errors’ is no longer available in PHP in Unknown on line 0 在切换php版本到更高版本时在终端查…

SpringBoot开发——SpringBoot3.3 中实现多端口监听

文章目录 1、项目环境与依赖配置2、配置多端口监听3、编写配置类实现多端口监听4、为每个端口创建独立的配置类4.1 8081 端口配置类4.2 8082 端口配置类 5、控制器类定义5.1 8080 端口的控制器&#xff08;保持原有配置&#xff09;5.2 8081 端口的控制器5.3 8082 端口的控制器…

Git分支

目录​​​​​​​ 一、分支是什么 二、查看、创建分⽀(git branch) 查看分支 创建分支 三、切换分支(git checkout&#xff0c;git checkout -b) 四、合并分支(git merge、git log查看合并情况) 五、删除分支&#xff08;git branch -d []&#xff09; 六、合并冲突&…

sigmoid和softmax有什么区别,softmax的本质是最大熵?

本文理论依据王木头的视频&#xff1a; softmax是为了解决归一问题凑出来的吗&#xff1f;和最大熵是什么关系&#xff1f;最大熵对机器学习为什么非常重要&#xff1f;_哔哩哔哩_bilibilihttps://www.bilibili.com/video/BV1cP4y1t7cP/?spm_id_from333.999.0.0&vd_sourc…

stm32 挂死定位(死循环)

1&#xff0c;调式程序时先看初始化和轮询点灯流程&#xff0c;如果灯没有闪烁则表明程序进入了死循环。 2&#xff0c;程序调式进入调式debug接口&#xff1b; 3&#xff0c;打断点依次运行&#xff1b; 4&#xff0c;查看寄存器&#xff1b; LR在异常后通常为0xFFFFFFFx&am…

ZFC in Lean 之 前集及其成员关系(S, ∈)是良创的(Well-founded)

基于前文&#xff0c;对前集&#xff08;S&#xff0c;pre-set&#xff09;、其成员关系&#xff08;∈&#xff0c;membership&#xff09;&#xff0c;以及良创&#xff08;Well-Founded&#xff09;的定义&#xff0c;此文&#xff0c;分析&#xff08;S, ∈&#xff09;是良…