HDLBITS笔记8:4 您所在的位置:网站首页 仿真编码器 HDLBITS笔记8:4

HDLBITS笔记8:4

2024-06-24 03:24| 来源: 网络整理| 查看: 265

优先级编码器是一种组合电路,当给定输入位矢量时,输出矢量中第一个1位的位置。例如,给定输入 8'b10010000 的 8 位优先级编码器将输出 3'd4,因为 bit[4] 是第一个高位。

构建 4 位优先级编码器。对于此问题,如果没有输入位为高(即输入为零),则输出为零。

注意:题目中的4位优先编码器指的是4位输入,2位输出的4-2优先编码器。其中真值表如下:

输入输出I3I2I1I0Y1Y0000100001x0101xx101xxx11

法1:采用真值表的方式实现4-2优先编码器:

使用casex语句块实现:

module top_module ( input [3:0] in, output reg [1:0] pos ); always@(*) begin casex(in[3:0]) 4'bxxx1: pos = 0; 4'bxx1x: pos = 1; 4'bx1xx: pos = 2; 4'b1xxx: pos = 3; default: pos = 0; endcase end endmodule

使用quartus ii实现的逻辑图:

 

采用casez语句块实现:只需要把上面代码中的x全换成z即可。

法2:

采用case(1’b1)语句实现:

// synthesis verilog_input_version verilog_2001 module top_module ( input [3:0] in, output reg [1:0] pos ); always@(*) begin case(1'b1) in[0]: pos = 0; in[1]: pos = 1; in[2]: pos = 2; in[3]: pos = 3; default: pos = 0; endcase end endmodule

使用quartus ii实现的逻辑图:

 

理解case(1'b1)语句:如图中代码所示:case(1’b1)可以理解为“在case语句中从上到下执行过程中只要有真,则立即执行且结束case。”即:当输入in[0]为1时,输出pos等于0;若in[0]等于0,则语句执行到in[1],若in[1]为真(1),则pos等于1,若in[1]等于0(为假),则继续执行到in[2]语句,执行和上述in[1]的同样操作。



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有