我是靠谱客的博主 内向西装,这篇文章主要介绍杭电数字电路课程设计-实验四-二进制优先级编码器设计实验,现在分享给大家,希望可以做个参考。

二进制优先级编码器设计

      • 实验目的
      • 实验要求
      • 实验原理
      • 程序代码
      • 测试用例
      • 仿真波形图
      • 电路管脚图
      • 引脚配置文件
      • 工程文件

实验目的

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

实验要求

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

实验原理

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

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

程序代码

复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
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

测试用例

复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
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]的输入值按照优先级产生不同输出
因此该模块实现了二进制优先级编码器的功能。

电路管脚图

在这里插入图片描述

引脚配置文件

复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
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;

工程文件

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

最后

以上就是内向西装最近收集整理的关于杭电数字电路课程设计-实验四-二进制优先级编码器设计实验的全部内容,更多相关杭电数字电路课程设计-实验四-二进制优先级编码器设计实验内容请搜索靠谱客的其他文章。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(65)

评论列表共有 0 条评论

立即
投稿
返回
顶部