这两天回归书本,继续阅读书上的内容,此时的体会与刚开始学那会的体会是不一样的,比如3_8decoder,之前就认为可以用case来写,而书上有一种更简便的方式来描述,带给你新的思路,既然有新方式可以描述,那就来比较这两者有什么区别。

方法1,利用case语句描述:

 module decoder3_8(in,out);
input [:] in;
output [:] out; reg [:] out;
always @(*)
begin
case(in)
'b000: out = 8'b0000_0001;
'b001: out = 8'b0000_0010;
'b010: out = 8'b0000_0100;
'b011: out = 8'b0000_1000;
'b100: out = 8'b0001_0000;
'b101: out = 8'b0010_0000;
'b110: out = 8'b0100_0000;
'b111: out = 8'b1000_0000;
default:out = 'b0000_0000;
endcase
end endmodule

方法2,利用移位方式描述:

 module decoder3_8(in,out);
input [:] in;
output [:] out; assign out = 'b1<<in; endmodule

从上面两种方式来看,方法2代码非常的少,一行就搞定,方法1得要好几行才描述完,一般给人感觉就是代码越少消耗的资源也就越少,其实不是的,来看具体比较结果吧:

可以看到除了RTL Viewer不一样外,其他的基本都一样。

在来看看仿真结果吧:

激励文件:

 module decoder3_8_top;
reg [:] in;
wire [:] out; initial
begin
in = 'dz;
#;
in = 'd0;
#;
in = 'd1;
#;
in = 'd2;
#;
in = 'd3;
#;
in = 'd4;
#;
in = 'd5;
#;
in = 'd6;
#;
in = 'd7;
#;
end
decoder3_8 u1(
.in(in),
.out(out)
); endmodule

移位方式仿真波形:

case方式仿真波形:

结果是相同的。

decoder3_8的更多相关文章

  1. Verilog学习笔记简单功能实现(四)...............译码器和编码器

    这里以简单的3-8译码器和8-3编码器为例: module decoder3_8(a,out); :]a; :]out; 'b1<<a;/*把最低位的1左移in位(根据in口输入的值)并赋 ...

  2. Verilog (二) multiplexer and decoder

    1  mutiplexer 数据选择器 1)  one-bit wide 2-1 mux wire dout = sel? din1 : din0; // conditional continuous ...

  3. nexys4ddr数码管动态扫描Verilog例程

    题目:实现数码管动态扫描功能,将十六个开关的值以十六进制的方式在4个数码管上同时显示出来. `timescale 1ns / 1ps module top( clk, sw, seg, an ); / ...

随机推荐

  1. Linux入门学习教程:虚拟机体验之KVM篇

    本文中可以学习到的命令: 1. aptitude 是apt-get 不会产生垃圾的版本 2.       dpkg -L virtualbox 显示属于该包的文件 lsmod | grep kvmfi ...

  2. Activity竟然有两个onCreate方法,可别用错了

    public class HomeDetailActivity { @Override protected void onCreate(@Nullable Bundle savedInstanceSt ...

  3. 四维dp 或者 剪枝 + dfs Codeforces Beta Round #6 (Div. 2 Only) D

    http://codeforces.com/contest/6/problem/D 题目大意:有一队人,排成一列,每个人都有生命值,你每次可以攻击2~n位置的一个的人,假设每次攻击的位置为pos,那么 ...

  4. Augular JS里的各种ng

    Augular JS里的各种ng- 正文: 1.ng-disabled="一种状态:该状态下不可用"例如: %button.btn.btn-2(ng-disabled=" ...

  5. js中子页面父页面方法和变量相互调用

    (1)子页面调用父页面的方法或者变量: window.parent.方法()或者变量名window.parent相当于定位到父页面 之后的操作和在父页面中写代码一样写 window.parent.aa ...

  6. 函数求值一<找规律>

    函数求值 题意: 定义函数g(n)为n最大的奇数因子.求f(n)=g(1)+g(2)+g(3)+-+g(n).1<=n<=10^8; 思路: 首先明白暴力没法过.问题是如何求解,二分.知道 ...

  7. Android:TextView最小行数设置

    我们有时候为了保证TextView必须有一个最小的高度,那么就需要设置这个行数. 因为如果你不设置的话,在measure这个TextView的时候,此时就无法准确的得到一个最小高度.因为设备不同,所以 ...

  8. 网络获取的XML的Pull解析

    <?xml version="1.0" encoding="utf-8" ?> - <students> - <student x ...

  9. ios学习基础篇一

    搜集的不错的oc学习资料 大概总结: http://my.oschina.net/luoguankun/blog/208526 详细教程: http://www.w3cschool.cc/ios/io ...

  10. 用Visual Studio 2015 编写驱动之前一定要注意的问题!!!

    如果你确定要使用Visual Studio 2015 编写驱动,那么在你安装Visual Studio 2015 和WDK之前,一定一定要注意一件事情,那就是确保SDK和WDK版本保持一致,切记切记! ...