4-16译码器(always,case用法)
- 4-16译码器学习记录
模块文件
1 module decoder_4_16(
2 a,
3 b,
4 c,
5 d,
6 out,
7 );
8 input a;
9 input b;
10 input c;
11 input d;
12 output reg [15:0]out;//同时定义了out的长度,输入输出类型和数据类型,注意【15:0】长度放在名字前面,且从大到小。
13
14 always@(*)begin//等价于always({a,b,c,d}) *号表示所有输入信号,不包括输出信号
15 case({a,b,c,d}) //case和endcase是固定搭配,但有多种情况的时候使用,十分方便
16 4'b0000:out=16'b0000_0000_0000_0001;
17 4'b0001:out=16'b0000_0000_0000_0010; // 位宽度'进制 数值 :赋值语句
18 4'b0010:out=16'b0000_0000_0000_0100; // 注意’是引号,不同了tinmescale。中间是用冒号连接赋值语句
19 4'b0011:out=16'b0000_0000_0000_1000;
20 4'b0100:out=16'b0000_0000_0001_0000;
21 4'b0101:out=16'b0000_0000_0010_0000;
22 4'b0110:out=16'b0000_0000_0100_0000;
23 4'b0111:out=16'b0000_0000_1000_0000;
24 4'b1000:out=16'b0000_0001_0000_0000;
25 4'b1001:out=16'b0000_0010_0000_0000;
26 4'b1010:out=16'b0000_0100_0000_0000;
27 4'b1011:out=16'b0000_1000_0000_0000;
28 4'b1100:out=16'b0001_0000_0000_0000;
29 4'b1101:out=16'b0010_0000_0000_0000;
30 4'b1110:out=16'b0100_0000_0000_0000;
31 4'b1111:out=16'b1000_0000_0000_0000;
32 endcase
33 end
34
35 endmodule
仿真激励代码
`timescale 1ns/1ns module decoder_4_16_tb();
reg s_a;
reg s_b;
reg s_c;
reg s_d;
wire [15:0]s_out; decoder_4_16 decoder_4_16_simulation(
.a(s_a),
.b(s_b),
.c(s_c),
.d(s_d),
.out(s_out)
); initial begin
s_a=0;s_b=0;s_c=0;s_d=0;
#100;
s_a=0;s_b=0;s_c=0;s_d=1;
#100;
s_a=0;s_b=0;s_c=1;s_d=0;
#100;
s_a=0;s_b=0;s_c=1;s_d=1;
#100;
s_a=0;s_b=1;s_c=0;s_d=0;
#100;
s_a=0;s_b=1;s_c=0;s_d=1;
#100;
s_a=0;s_b=1;s_c=1;s_d=0;
#100;
s_a=0;s_b=1;s_c=1;s_d=1;
#100;
s_a=1;s_b=0;s_c=0;s_d=0;
#100;
s_a=1;s_b=0;s_c=0;s_d=1;
#100;
s_a=1;s_b=0;s_c=1;s_d=0;
#100;
s_a=1;s_b=0;s_c=1;s_d=1;
#100;
s_a=1;s_b=1;s_c=0;s_d=0;
#100;
s_a=1;s_b=1;s_c=0;s_d=1;
#100;
s_a=1;s_b=1;s_c=1;s_d=0;
#100;
s_a=1;s_b=1;s_c=1;s_d=1;
#100;
$stop;
end endmodule
- 注意
1.always的用法
格式:always @(敏感信号)。可以直接用(*)代表所有输入信号,也可以是某一组特定信号({a,b,c}),也可以是某几个信号(a or b or c)。
always@(*)是所有变量都是敏感列表,*代替了敏感变量。
用处:在时序电路中,always @(posedge Clk)表示上升沿触发,下降沿用negedge。如果需要加异步功能,写成always @(posedge Clk or posedge Reset)。用or连接。如果异步信号高电平有效,则Reset用上升沿posedge修饰,反之。同时把if(Reset==1)改为if(Reset==0),此外,异步判断语句必须在always第一句,首先判断。
注意事项:别在不同always块内为同一变量赋值。?别在同一always同时阻塞非阻塞赋值?描述组合用阻塞(电平敏感),描述时序用非阻塞(边沿敏感)。=或《=左边须为reg型。@()内不能同时含电平和边沿,不同同时含一个信号的上升下降?
2.case的用法
case-endcase 中加入并行判断结构和赋值语句。它的判断条件一般是互斥的,且没有优先级。
casez不考虑高阻态z。casex不考虑高阻态z和不定态x。注意case里面语句的格式和结构,见上面代码。
2022-05-09 16:13:11
4-16译码器(always,case用法)的更多相关文章
- sql case 用法总结
快下班了,抽点时间总结一下sql 的 case 用法. sql 里的case的作用: 用于计算条件列表的表达式,并返回可能的结果之一.sql 的case 类型于编程语言里的 if-esle if-el ...
- SQL进阶随笔--case用法(一)
SQL进阶一整个是根据我看了pdf版本的整理以及自己的见解整理.后期也方便我自己查看和复习. CASE 表达式 CASE 表达式是从 SQL-92 标准开始被引入的.可能因为它是相对较新的技术,所以尽 ...
- shell脚本学习之case用法及实例
case语句和判断语句[if...elif...else]功能类似;当在逻辑判断比较简单的情况下,比后者的代码量要少许多.case用法,用变量来匹配某值,如果匹配成功则执行它下面的命令,直到 ;;为止 ...
- Linux上case用法
Linux上case用法示例: #!/bin/bash # This is a script for test case ASK_COUNT=$ #从参数获取该变量的值 # if [ -z " ...
- shell脚本之case用法
你会经常发现自己在尝试计算一个变量的值,在一组可能的值中寻找特定值.在这种情形下, 你不得不写出很长的if-then-else语句,就像下面这样. $ cat test25.sh #!/bin/bas ...
- SQL进阶随笔--case用法(二)
---恢复内容开始--- 用 CHECK 约束定义多个列的条件关系 今天来说下check和case的用法.其实,CASE 表达式和 CHECK 约束是很般配的一对组合.也许有很多数据库工程师不怎么用 ...
- shell的case用法
今天给大家简单介绍一下结构条件语句的用法,实际上就是规范的多分支if语句,如下: case语法: case "字符串变量" in 值1)指令1... ;; 值2)指令2... ;; ...
- 9.14.16 Django ORM进阶用法
2018-9-14 14:26:45 ORM 练习题 : http://www.cnblogs.com/liwenzhou/articles/8337352.html 2018-9-14 21:1 ...
- Case用法
SELECT <myColumnSpec> = CASE WHEN <A> THEN <somethingA> WHEN <B> THEN <so ...
随机推荐
- 机器学习-学习笔记(一) --> (假设空间 & 版本空间)及 归纳偏好
机器学习 一.机器学习概念 啥是机器学习 机器学习:假设用P来评估计算机程序在某任务类T上的性能,若一个程序通过利用经验E在T中任务上获得了性能改善,则关于T和P,该程序对E进行了学习 通俗讲:通过计 ...
- Golang(go语言)开发环境配置
VSCode开发环境配置 目录 VSCode开发环境配置 先到VSCode官网去下载适合自己系统的VSCode安装软件 演示在WIndows下 安装使用 演示在Linux(Ubuntu/centos) ...
- 【位运算】剑指offer 56. 数组中数字出现的次数
这是一系列位运算的题目,本文将由浅入深,先从最简单的问题开始: 问题1: 一个数组中只有一个数字出现过1次,其余数字都出现过两次,请找到那个只出现1次的数字.要求时间复杂度是 \(O(n)\),空间复 ...
- 使用python脚本+zabbix前端监控云联网底层TCP数据流所负载的链路质量,并在丢包时联动保存MTR记录
背景 目前国内各家云联网跨区域数据传输,会将数据流通过哈希运算负载到不同的底层链路上,而底层链路质量差异较大,这种情况导致的现象就是,使用传统的icmp监控线路正常,但是业务一直不稳定,所以才有了使用 ...
- 强制20天加班开发app后被集体解雇,象寻技术负责人公众号发文怒斥前领导
5月16日下午三点,象寻官方公众号发了一篇<祝象寻早日倒闭的文章>文章,文章配一个竖中指的手势.如此劲爆的文章瞬间引爆了微信朋友圈,大家纷纷分享给好友和微信群,阅读量也达到了十万+. 当时 ...
- ElasticSearch7.3学习(二十七)----聚合概念(bucket和metric)及其示例
一.两个核心概念:bucket和metric 1.1 bucket 有如下数据 city name 北京 张三 北京 李四 天津 王五 天津 赵六 天津 王麻子 划分出来两个bucket,一个是北 ...
- java基础题(3)
5.面向对象 5.1封装 5.1.1修改Data类的定义 描述 现有一个Data类,内部定义了属性x和y,在main方法中实例化了Data类,并计算了data对象中x和y的和.但是,Data类的定义存 ...
- ROS基本程序实现
0.前言 现在介绍ROS基本程序实现的教程有很多,步骤无非就是建工作空间,编译,创建功能包,创建文件和修改CMakeList,之后再编译.运行程序这几步.但是这些教程中很多在文件夹切换的很混乱,导致会 ...
- conda命令的使用,环境安装,创建环境以Anaconda为例
Anaconda用命令conda创建环境: 安装Anaconda后,用Conda –version查看conda的版本号: Conda create -n name python = x.xx Con ...
- RPA应用场景-银行回单查询
场景概述银行回单查询 所涉系统名称银行网银 人工操作(时间/次) 5 分钟 所涉人工数量 4 操作频率不定时 场景流程 1.收到外派业务员申请查询收入银行回单的邮件: 2.依据邮件中提供的客户信息进入 ...