• 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用法)的更多相关文章

  1. sql case 用法总结

    快下班了,抽点时间总结一下sql 的 case 用法. sql 里的case的作用: 用于计算条件列表的表达式,并返回可能的结果之一.sql 的case 类型于编程语言里的 if-esle if-el ...

  2. SQL进阶随笔--case用法(一)

    SQL进阶一整个是根据我看了pdf版本的整理以及自己的见解整理.后期也方便我自己查看和复习. CASE 表达式 CASE 表达式是从 SQL-92 标准开始被引入的.可能因为它是相对较新的技术,所以尽 ...

  3. shell脚本学习之case用法及实例

    case语句和判断语句[if...elif...else]功能类似;当在逻辑判断比较简单的情况下,比后者的代码量要少许多.case用法,用变量来匹配某值,如果匹配成功则执行它下面的命令,直到 ;;为止 ...

  4. Linux上case用法

    Linux上case用法示例: #!/bin/bash # This is a script for test case ASK_COUNT=$ #从参数获取该变量的值 # if [ -z " ...

  5. shell脚本之case用法

    你会经常发现自己在尝试计算一个变量的值,在一组可能的值中寻找特定值.在这种情形下, 你不得不写出很长的if-then-else语句,就像下面这样. $ cat test25.sh #!/bin/bas ...

  6. SQL进阶随笔--case用法(二)

    ---恢复内容开始--- 用 CHECK 约束定义多个列的条件关系 今天来说下check和case的用法.其实,CASE 表达式和 CHECK 约束是很般配的一对组合.也许有很多数据库工程师不怎么用 ...

  7. shell的case用法

    今天给大家简单介绍一下结构条件语句的用法,实际上就是规范的多分支if语句,如下: case语法: case "字符串变量" in 值1)指令1... ;; 值2)指令2... ;; ...

  8. 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 ...

  9. Case用法

    SELECT <myColumnSpec> = CASE WHEN <A> THEN <somethingA> WHEN <B> THEN <so ...

随机推荐

  1. [笔记] Powerful Number 筛

    定义 Powerful Number(以下简称 PN)筛类似于杜教筛,可以拿来求一些积性函数的前缀和. 要求: 假设现在要求积性函数 \(f\) 的前缀和 \(F(n)=\sum_{i=1}^nf(i ...

  2. 离谱的 CSS!从表盘刻度到艺术剪纸

    某日,群里有这样一个问题,如何实现这样的表盘刻度: 这其实是个挺有意思的问题,方法也有很多. 单标签,使用 conic-gradient 实现表盘刻度 最简单便捷的方式,就是利用角向渐变的方式 con ...

  3. ZABBIX新功能系列1-使用Webhook将告警主动推送至第三方系统

    Zabbix5以来的新版本与以前的版本除UI界面变化较大外,在很多功能上也有许多亮点,我这里计划安排1个系列来和大家交流一些新功能的使用,这是第一篇:使用Webhook将告警主动推送至第三方系统. 首 ...

  4. Arthas常用功能及一次线上问题排查

    一.Arthas简介 Arthas是Alibaba开源的Java诊断工具,功能很强大,它是通过Agent方式来连接运行的Java进程.主要通过交互式来完成功能. https://arthas.aliy ...

  5. spring boot redis 写入异常

    redis 的 key value 使用 json 序列化.反序列化时,写入的 bean 不能是 final 类型的类,否则无法解析

  6. Linux磁盘空间查看及空间满的处理

    问题 在部署应用到测试环境的时候,有些文件同步出错,最后定位到测试服务器空间满了. 解决 查看磁盘空间还剩多少空间 df -h 查看根目录下每个目录占用空间大小 du --max-depth=1 -h ...

  7. 【单片机】NB-IoT移远BC28调试笔记

    一.入网总体思路 入网思路是参考 <Quectel_BC95&BC35-G&BC28_应用设计指导_V1.1.pdf>来做的.流程如图所示: 二.具体调试细节3.1 AT+ ...

  8. freeswitch使用mod_shout模块播放mp3

    概述 freeswitch 在对VOIP语音通话中,可以通过playback命令播放IVR语音文件. 默认情况下,freeswitch支持wav文件,也可以直接播放VOIP中常见编解码的G711文件. ...

  9. Unity-UGUI-无限循环列表

    前言:项目准备新增一个竞技场排行榜,策划规定只显示0-400名的玩家.我一想,生成四百个游戏物体,怕不是得把手机给卡死?回想原来在GitHub上看到过一个实现思路就是无限循环列表,所以就想自己试试.公 ...

  10. CF1682C. LIS or Reverse LIS?

    题意:给\(n\)个数,问你能构出严格上升子序列长度和下降子序列长度最小值的最大值. 思路: 如果一个数出现至少两次,ans++. 统计出现一次的个数,因为再最长上升子序列中,只能有一个值能贡献到下降 ...