杭电数字电路课程设计-实验四-二进制优先级编码器设计实验

实验目的

  1. 学习二进制优先级编码器的原理与设计方法
  2. 掌握灵活运用Verilog HDL语言进行各种描述与建模的技巧和方法

实验要求

  1. 使用合适的表述方式实现3位二进制优先级编码器。
  2. 课前任务:在Xilinx ISE上完成创建工程、编辑程序源代码、编程、综合、仿真、验证,确保逻辑正确性。
  3. 实验室任务:配置管脚,生成*.bit文件,完成板级验证。
  4. 撰写实验报告。

实验原理

二进制优先级编码器真值表

在这里插入图片描述
  当使能信号输入为0时,二进制译码器开始工作,对于输入为1的位,按照优先级顺序进行编码输出,若输出有效则Done输出为1。

程序代码

module yxj(IN,EN,Y,Done);
	input[7:0] IN;
	input EN;
	output reg Done;
	output reg[2:0] Y;
	
	always @(IN or EN)
	if(!EN)
	  begin
	    if(IN[0]) begin Y[2]=0;Y[1]=0;Y[0]=0; Done=0;end
		else if(IN[1]) begin Y[2]=0;Y[1]=0;Y[0]=1; Done=1;end
		else if(IN[2]) begin Y[2]=0;Y[1]=1;Y[0]=0; Done=1;end
		else if(IN[3]) begin Y[2]=0;Y[1]=1;Y[0]=1; Done=1;end
		else if(IN[4]) begin Y[2]=1;Y[1]=0;Y[0]=0; Done=1;end
		else if(IN[5]) begin Y[2]=1;Y[1]=0;Y[0]=1; Done=1;end
		else if(IN[6]) begin Y[2]=1;Y[1]=1;Y[0]=0; Done=1;end
		else if(IN[7]) begin Y[2]=1;Y[1]=1;Y[0]=1; Done=1;end
		else begin Y[2]=0;Y[1]=0;Y[0]=0;Done=0;end
	  end
	else begin Y[2]=0;Y[1]=0;Y[0]=0;Done=0;end
	
endmodule

测试用例

initial begin
	IN = 0;EN = 0;
		#100;
	EN=1; IN[0]=1;IN[1]=0;IN[2]=0;IN[3]=0;IN[4]=0;IN[5]=0;IN[6]=0;IN[7]=0;
		#100;
	EN=0; IN[0]=0;IN[1]=1;IN[2]=0;IN[3]=0;IN[4]=0;IN[5]=0;IN[6]=0;IN[7]=0;
		#100;
	EN=0; IN[0]=0;IN[1]=0;IN[2]=1;IN[3]=0;IN[4]=0;IN[5]=0;IN[6]=0;IN[7]=0;
		#100;
	EN=0; IN[0]=0;IN[1]=0;IN[2]=0;IN[3]=1;IN[4]=0;IN[5]=0;IN[6]=0;IN[7]=0;
		#100;
	EN=0; IN[0]=0;IN[1]=0;IN[2]=0;IN[3]=0;IN[4]=1;IN[5]=0;IN[6]=0;IN[7]=0;
		#100;
	EN=0; IN[0]=0;IN[1]=0;IN[2]=0;IN[3]=0;IN[4]=0;IN[5]=1;IN[6]=0;IN[7]=0;
		#100;
	EN=0; IN[0]=0;IN[1]=0;IN[2]=0;IN[3]=0;IN[4]=0;IN[5]=0;IN[6]=1;IN[7]=0;
		#100;
	EN=0; IN[0]=0;IN[1]=0;IN[2]=0;IN[3]=0;IN[4]=0;IN[5]=0;IN[6]=0;IN[7]=1;
		#100;
	EN=0; IN[0]=1;IN[1]=0;IN[2]=0;IN[3]=0;IN[4]=0;IN[5]=0;IN[6]=0;IN[7]=1;
		#100;
	EN=0; IN[0]=1;IN[1]=0;IN[2]=0;IN[3]=0;IN[4]=0;IN[5]=0;IN[6]=0;IN[7]=1;
  end		

仿真波形图

在这里插入图片描述

从波形图可以看出:
  当EN=0时,Y[2:0]会根据IN[7:0]的输入值按照优先级产生不同输出
因此该模块实现了二进制优先级编码器的功能。

电路管脚图

在这里插入图片描述

引脚配置文件

NET "IN[7]" IOSTANDARD = LVCMOS18; NET "IN[7]" LOC = Y6;
NET "IN[6]" IOSTANDARD = LVCMOS18; NET "IN[6]" LOC = Y4;
NET "IN[5]" IOSTANDARD = LVCMOS18; NET "IN[5]" LOC = W4;
NET "IN[4]" IOSTANDARD = LVCMOS18; NET "IN[4]" LOC = V4;
NET "IN[3]" IOSTANDARD = LVCMOS18; NET "IN[3]" LOC = V3;
NET "IN[2]" IOSTANDARD = LVCMOS18; NET "IN[2]" LOC = T4;
NET "IN[1]" IOSTANDARD = LVCMOS18; NET "IN[1]" LOC = U3;
NET "IN[0]" IOSTANDARD = LVCMOS18; NET "IN[0]" LOC = T3;
NET "Y[2]" IOSTANDARD = LVCMOS18; NET "Y[2]" LOC = R1;
NET "Y[1]" IOSTANDARD = LVCMOS18; NET "Y[1]" LOC = P2;
NET "Y[0]" IOSTANDARD = LVCMOS18; NET "Y[0]" LOC = P1;
NET "Done" IOSTANDARD = LVCMOS18; NET "Done" LOC = M1;
NET "EN" IOSTANDARD = LVCMOS18; NET "EN" LOC = R4; 
NET "EN" PULLDOWN;NET "IN[7]" PULLDOWN;NET "IN[6]" PULLDOWN;
NET "IN[5]" PULLDOWN;NET "IN[4]" PULLDOWN;NET "IN[3]" PULLDOWN;
NET "IN[2]" PULLDOWN;NET "IN[1]" PULLDOWN;NET "IN[0]" PULLDOWN;

工程文件

工程文件: 二进制优先级编码器设计实验.

  • 2
    点赞
  • 23
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值