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 ...
随机推荐
- 使用 Swoole 加速你的 CMS 系统,并实现热更新 (基于 Laravel 框架)
主题:使用 Swoole 加速你的 CMS 系统,并实现热更新 关于 Swoole 的简介不再在此赘述,各位可以自行查看官网的文档进行详细的了解. 本文以 MyCms 为例,简要说明 Swoole 结 ...
- 详解计算miou的代码以及混淆矩阵的意义
详解计算miou的代码以及混淆矩阵的意义 miou的定义 ''' Mean Intersection over Union(MIoU,均交并比):为语义分割的标准度量.其计算两个集合的交集和并集之比. ...
- 设计模式---单例模式,pickle模块
设计模式---单例模式 简介 单例模式(Singleton Pattern) 是一种常用的软件设计模式,该模式的主要目的是确保某一个类只有一个实 例存在.当你希望在整个系统中,某个类只能出现一个实例时 ...
- 低代码 —— 初步认识 Appsmith
初步认识 Appsmith appsmith 是什么 appsmith 是 github 上的一个开源项目,截至此刻(20220512)有 17.7k Star. Appsmith 是一个低代码.开源 ...
- postman 脚本和变量
背景 后端接口有登录或鉴权验证,通过 swagger 调用比较费劲,并且 java 的 swagger 库(不够自动化,嵌套类支持需要各种配置才能正常显示 schema)个人感觉也没有 .net co ...
- unity---脚本创建按钮
脚本创建按钮 新建文件夹 Resources 方便引用图片 在文件Resources中新建Images,并且下载一个图片 没有图片,按钮内容无法显示 图片需要处理一下 Textrue Type 改为 ...
- jQuery其他操作与bootstrap框架
目录 标签操作 样式操作 位置操作 文本值操作 属性操作 文档处理 事件操作 常见事件 克隆案例 悬浮事件hover() 监听input输入值事件 阻止后续事件 事件委托 动画效果 bootstrap ...
- SmartIDE v0.1.17 已经发布 - 模版库远程模式和插件市场公测
SmartIDE v0.1.17 已经发布,本次同步更新了CLI (Build 3332) 的稳定版通道和Server (Build 3333) 生产环境(内测中).请参考对应的 安装说明 获取最新版 ...
- consul系列文章02---替换掉.netcore的配置文件
如果是开发微服务的项目,多个服务的配置管理起来比较麻烦,需要集中管理,也就是需要有配置中心: consul集成配置中心的思路:读取配置文件时不在从本地的应用中读取,而是从consul的KEY/valu ...
- Java变量, 常量和作用域
目录 变量 作用域 局部变量 实例变量 类变量 常量 命名规范 视频课程 变量 变量就是可以变化的量 Java是一种强类型的语言, 每个变量都必须声明其类型 Java变量是程序中最基本的存储单元, 其 ...