8-3优先编码器 Verilog-modelsim

#8-3优先编码器 Verilog-modelsim

##tb.v (tb)

`timescale 1ns/1ns	
module tb;          
   reg [7:0] din;
  wire [2:0] dout;   

  initial begin
  	               din = 8'b00000000 ;
      forever #5   din = din+1;	
  end
				 

YOUXIAN83 u_YOUXIAN83
    (  .din       (din  ),
       .dout      (dout  )
    );									
  															
endmodule												

##test.do (sim)


# step 1
vlib work

# step 2
vlog ../rtl/83youxian.v
vlog ../tb/tb.v

#step 3
vsim tb


##83youxian.v (rtl)


module YOUXIAN83 ( din,dout );
 input  [7:0]  din;
 output [0:2] dout;
    reg [2:0] dout;
always @( * )
  begin
	       if (din==8'b???????0) dout=3'b000;
	  else if (din==8'b??????01) dout=3'b100;
	  else if (din==8'b?????011) dout=3'b010;
   	else if (din==8'b????0111) dout=3'b110;
   	else if (din==8'b???01111) dout=3'b001;
   	else if (din==8'b??011111) dout=3'b101;
	  else if (din==8'b?0111111) dout=3'b011;
	  else if (din==8'b01111111) dout=3'b111;
                          else dout=3'b000;
  end
endmodule
8-3优先编码器是一种逻辑电路,它能够将8个输入信号编码成一个3位的输出信号。 Verilog程序是一种硬件描述语言,可以用来描述和生成数字逻辑电路。下面是一个用Verilog程序编写8-3优先编码器的实现。 ``` module priority_encoder ( input [7:0] inputs, output reg [2:0] output ); always @(inputs) begin casex (inputs) 8'b00000001: output = 3'b000; 8'b00000010: output = 3'b001; 8'b00000100: output = 3'b010; 8'b00001000: output = 3'b011; 8'b00010000: output = 3'b100; 8'b00100000: output = 3'b101; 8'b01000000: output = 3'b110; 8'b10000000: output = 3'b111; default: output = 3'b000; // 如果没有任何输入信号,则输出默认值 endcase end endmodule ``` 在以上代码中,我们定义了一个模块 `priority_encoder`,它有一个8位的输入信号 `inputs` 和一个3位的输出信号 `output`。`output` 使用 `reg` 类型来声明,表示它是一个可寄存器的信号。其中 `always @(inputs)` 表示输入信号发生变化时,会重新计算 `output` 的值。 在 `casex(inputs)` 语句中,我们针对不同的输入信号值,使用 `case` 语句和模式匹配来确定输出信号的值。例如,当 `inputs` 的值为 `8'b00000001` 时,我们将 `output` 的值设为 `3'b000`。如果没有输入信号匹配到任何一个模式,则将 `output` 的值设为默认值 `3'b000`。 通过以上Verilog程序的实现,我们可以得到一个功能完善的8-3优先编码器。具体的功能是,根据不同的输入信号值来确定相应的3位编码输出。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值