【Verilog HDL-1】基本、向量、模块

news2024/11/26 9:42:38

HDL习题

1 阻塞型赋值‘=’与非阻塞型赋值‘<=’

阻塞型赋值 b = a b=a b=a:适用于纯组合电路
非阻塞型赋值 b < = a b<=a b<=a:适用与时序逻辑电路

2 wire线型,assign连续赋值

wire a,b,c;
assign b = a;
assign c = a;

与编程语言不同, a s s i g n assign assign “连续赋值” 描述的是 事物之间的联系,而不是将值从a复制到b的操作。那么多个赋值语句之间不存在像C语言中的先后关系。

  • AngGate
assign out = a & b;
  • norGate 或非门
assign out = ~(a | b);
  • xorGate 异或门 ⊕ \oplus
assign out = a ^ b;//^按位异或
  • xnorGate 同或门 ⊙ \odot
assign out = ~(a ^ b);

在这里插入图片描述

3 vector向量[end:start]

3-1 Vectorgates

module top_module(
	input wire[2:0] a, 
	input wire[2:0] b, 
	output wire[2:0] out_or_bitwise,
	output wire out_or_logical,
	output wire[5:0] out_not
);
	
	assign out_or_bitwise = a | b;	// 按位相或
	assign out_or_logical = a || b;	// 各位一次相或	

	assign out_not[2:0] = ~a;	// 按位取反
	assign out_not[5:3] = ~b;	
	
endmodule

3-2 向量合并

例如: { 1 ′ b 1 , 1 ′ b 0 , 3 ′ b 101 } = > 5 ′ b 10101 \{1'b1, 1'b0, 3'b101\} => 5'b10101 {1b1,1b0,3b101}=>5b10101

module top_module (
    input [4:0] a, b, c, d, e, f,
    output [7:0] w, x, y, z );
    assign {w, x, y, z} = {a, b, c, d, e, f, 2'b11};
endmodule

3-3 反转

module top_module( 
    input [7:0] in,
    output [7:0] out
);
	// 方式一
	generate
    	genvar i;
        for(i = 0;i < 8;i++)begin:conv//generate块的名为conv
            assign out[i] = in[7-i];
        end
    endgenerate
    
    // 方式二
    always@(*)begin
        for(int i = 0;i < 8;i++)begin
            out[i] = in[7-i];
        end
    end
endmodule

3-4 复制

assign out = {{24{in[7]}}, in};

4 模块

4-1 模块移位

module top_module ( input clk, input d, output q );
    wire q1,q2;
    my_dff dff1(
        .clk(clk),
        .d(d),
        .q(q1)
    );
    my_dff dff2(
        .clk(clk),
        .d(q1),
        .q(q2)
    );
    my_dff dff3(
        .clk(clk),
        .d(q2),
        .q(q)
    );
endmodule

4-2 32位加法器

// 32位加法器由2个16位加法器组成,一个16位加法器由16个半加器组成
module top_module (
    input [31:0] a,
    input [31:0] b,
    output [31:0] sum
);
	wire cout1;
	add16 add16_1(
		.a(a[15:0]),
		.b(b[15:0]),
		.cin(1'b0),
		.sum(sum[15:0]),
		.cout(cout1)
	);
	add16 add16_2(
		.a(a[31:16]),
		.b(b[31:16]),
		.cin(cout1),
		.sum(sum[31:16]),
		.cout()
	);
endmodule

module add1 (
	input a, b, cin, 
	output sum, cout );
	assign {cout,sum} = a + b + cin;
endmodule

其中 assign {cout,sum} = a + b + cin; 例如四位加法器有:
a d e c = 11 , b d e c = 13 , a + b d e c = 24 a_{dec}=11,b_{dec}=13,a+b_{dec}=24 adec=11,bdec=13,a+bdec=24 a b i n = 1011 , b b i n = 1101 a_{bin}=1011,b_{bin}=1101 abin=1011,bbin=1101, ( a + b ) b i n = (a+b)_{bin}= (a+b)bin= 0001 0001 0001 1000 1000 1000
c i n n − 1 = c o u t n cin_{n-1}=cout_{n} cinn1=coutn

位号cinabcoutsum
001110
111010
210110
311111

4-3 减法器

module top_module(
    input [31:0] a,
    input [31:0] b,
    input sub,
    output [31:0] sum
);
    wire cout1;
    wire [31:0] b_in;
    assign b_in = b ^ {32{sub}};   // 异或
    add16 add16_1(
        .a(a[15:0]),
        .b(b_in[15:0]),
        .cin(sub),
        .sum(sum[15:0]),
        .cout(cout1)
    );
    add16 add16_2(
        .a(a[31:16]),
        .b(b_in[31:16]),
        .cin(cout1),
        .sum(sum[31:16]),
        .cout()
    );
endmodule

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

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

相关文章

SpringDataJPA系列(2)Commons核心Repository

SpringDataJPA系列(2)Commons核心Repository Spring Data Commons依赖关系 我们通过 Gradle 看一下项目依赖&#xff0c;了解一下 Spring Data Common 的依赖关系 通过上图的项目依赖&#xff0c;不难发现&#xff0c;数据库连接用的是 JDBC&#xff0c;连接池用的是 HikariC…

Orangepi Zero2使用外设驱动库wiringOP配合定时器驱动SG90舵机

目录 一、舵机的基本认知和硬件接线 1.1 舵机的基本认知&#xff1a; 1.2 硬件接线&#xff1a; 1.3 怎么控制舵机旋转不同的角度&#xff1a; 二、Linux定时器 2.1 定时器setitimer()函数原型和头文件&#xff1a; 2.2 信号处理函数signal()原型和头文件&#xff1a; 2…

thymeleaf+mybatis(本文章用于期末考前10分钟速看)

期末速看 pom&#xff08;了解&#xff09;application.propertiessql代码Controller控制层视图service&#xff1a; 服务层mapper&#xff08;dao&#xff09;&#xff1a;持久层entity层(model层&#xff0c;domain层、 bean)&#xff1a;对应数据库表&#xff0c;实体类 效果…

【C语言】指针剖析(2)

©作者:末央&#xff06; ©系列:C语言初阶(适合小白入门) ©说明:以凡人之笔墨&#xff0c;书写未来之大梦 目录 一、数组名1.概念2.sizeof和&里面的数组名sizeof& 二、使用指针访问数组三、一维数组传参本质四、指针数组1.概念实例&#xff08;模拟二维数…

【GitOps】使用Google工具JIB实现本地无需安装容器推送镜像,加速SpringCloud项目开发

文章目录 一、效果展示二、简介三、安装Jib插件1、区分环境2、安装插件一、效果展示 本地是window系统,无docker环境,没有任何runtime,使用jib工具打包镜像并推送完成,用时20秒 二、简介 Jib 是 Google 开发的一款开源工具,旨在帮助 Java 开发者更高效地将 Java 应用程…

25届近5年北京交通大学自动化考研院校分析

北京交通大学 目录 一、学校学院专业简介 二、考试科目指定教材 三、近5年考研分数情况 四、近5年招生录取情况 五、最新一年分数段图表 六、初试大纲复试大纲 七、学费&奖学金&就业方向 一、学校学院专业简介 二、考试科目指定教材 1、考试科目介绍 2、指定教…

vue使用scrollreveal和animejs实现页面滑动到指定位置后再开始执行动画效果

效果图 效果链接&#xff1a;http://website.livequeen.top 介绍 一、Scrollreveal ScrollReveal 是一个 JavaScript 库&#xff0c;用于在元素进入/离开视口时轻松实现动画效果。 ScrollReveal 官网链接&#xff1a;ScrollReveal 二、animejs animejs是一个好用的动画库…

LabVIEW电压电流实时监测系统

开发了一种基于LabVIEW和研华&#xff08;Advantech&#xff09;数据采集卡的电压电流实时监测系统&#xff0c;通过高效的数据采集和处理&#xff0c;为工业和科研用户提供高精度、实时的电压电流监测解决方案。系统采用研华USB-4711A数据采集卡&#xff0c;结合LabVIEW编程环…

【自然资源】国家历史文化名城你知道多少?

【自然资源】国家历史文化名城你知道多少&#xff1f; 中国五千年的历史孕育出了一些因深厚的文化底蕴和发生过重大历史事件而青史留名的城市。根据《中华人民共和国文物保护法》&#xff0c;“历史文化名城”是指保存文物特别丰富&#xff0c;具有重大历史文化价值和革命意义…

数据恢复篇: 如何在数据丢失后恢复照片

数据丢失的情况并不少见。如果您曾经遇到过图像丢失的情况&#xff0c;您可能想过照片恢复工具是如何工作的&#xff1f;可能会丢失多少数据图像&#xff1f;即使是断电也可能导致照片和媒体文件丢失。 话虽如此&#xff0c;如果你认为删除的照片无法恢复&#xff0c;那你就错…

sheng的学习笔记-hadoop,MapReduce,yarn,hdfs框架原理

目录 搭建hadoop 下载hadoop JAVA 下载bin windows 改环境变量 将winutils.exe和hadoop.dll放到C:\Windows\System32下&#xff0c;然后重启 修改配置 vim core-site.xml vim hdfs-site.xml hadoop-env.sh mapred-site.xml yarn-site.xml 格式化命令 启动集群 …

大数据可视化实验(七):Python数据可视化

目录 一、实验目的... 1 二、实验环境... 1 三、实验内容... 1 1&#xff09;绘制带颜色的柱状图。.. 1 2&#xff09;绘制堆叠柱状图。.. 3 3&#xff09;绘制数学函数曲线图。.. 4 4&#xff09;使用seaborn绘制组合图形。... 5 5&#xff09;使用Boken绘制多个三角形…

区块链技术与数字货币

1.起源 ➢中本聪(Satoshi Nakamoto), 2008 ➢比特币:一种点对点的电子现金系统 2.分布式账本技术原理 1.两个核心技术&#xff1a; ➢以链式区块组织账本数据实现账本数据的不可篡改 ➢分布式的可信记账机制 2.共识机制&#xff1a;由谁记账 ➢目的&#xff1a; ⚫ 解…

数据可视化期末总结

期末考试重点&#xff08;世界上最没意义的事情&#xff09; 选择 p8 数据可视化的标准&#xff1a; 实用、完整、真实、艺术、交互&#xff08;性&#xff09; p21 色彩三属性 色相、饱和度、亮度 p23 视觉通道的类型&#xff1a; 记得色调是定性 p39 散点图&#xff08;二维…

检查显卡驱动和cuda版本的对应关系并下载

1. CUDA 12.5 Release Notes — Release Notes 12.5 documentation Official Drivers | NVIDIA&#xff08;驱动下载&#xff09;搜索结果 | GeForce RTX 3090 | Linux 64-bit | NVIDIA nvidia-smi &#xff08;查看cuda&#xff09; pipx run nvitop nvcc -V https://deve…

飞书API 2-3:如何使用 API 创建数据表,解放人工?

一、引入 作为飞书多维表的深度使用者&#xff0c;经常需要将一些数据库的数据同步到多维表上&#xff0c;在数据写入之前&#xff0c;一般需要新建数据表和字段。当通过网页端界面新建字段时&#xff0c;如果字段少&#xff0c;还能接受手动一个个创建&#xff0c;不过一旦字…

win11 内存占用过大优化尝试

关闭开机加速 wins打开搜索 控制面板&#xff0c;打开控制面板 找到硬件和声音-电源选项-选择电源按钮的功能-去掉勾选启用快速启动 关闭windows 更新 winr 输入services.msc打开服务-搜索windows 更新-双击打开设置-选择禁用 貌似没什么用。

【C++ | 委托构造函数】委托构造函数 详解 及 例子源码

&#x1f601;博客主页&#x1f601;&#xff1a;&#x1f680;https://blog.csdn.net/wkd_007&#x1f680; &#x1f911;博客内容&#x1f911;&#xff1a;&#x1f36d;嵌入式开发、Linux、C语言、C、数据结构、音视频&#x1f36d; &#x1f923;本文内容&#x1f923;&a…

TypeScript学习笔记(全)

文章目录 TypeScript入门2.编译并运行TS代码2.1.简化运行ts步骤 3.TS中的常用类型3.1.TS中的类型注解3.2.TS中的原始类型3.3.TS中的数组类型3.4.TS中的联合类型3.5.类型别名3.6.函数类型3.6.1.单独执行参数、返回值类型3.6.2.同时指定参数&#xff0c;返回值类型3.6.3.函数的vo…

【C++开发必备工具】Dependency Walker与Dependencies

Dependency Walker 与 Dependencies 1. Dependency Walker1.1 功能特点1.2 使用方法1.3 注意事项 2. Dependencies2.1 功能特点2.2 使用方法2.3 注意事项 3. 总结 1. Dependency Walker Dependency Walker 是一个免费软件工具&#xff0c;用于查看 Windows 应用程序的模块&…