实验目的

  1. 熟练组合电路的设计和实现的方式
  2. 掌握Verilog HDL组合电路模块的设计规范。
  3. 掌握组合逻辑测试代码的撰写和仿真测试方法。

预习要求

  1. 了解assign、门原件、always过程语句及模块调用描述组合逻辑电路设计的方法和注意事项。
  2. 了解QuartusII或iverilog&gtkwave软件使用的基本规范和操作流程

实验原理

  1. 带优先级8-3编码器和3-8译码器

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    # 带优先级8-3编码器
    module code83(in8,out3);
    input[7:0] in8; output reg[2:0] out3;
    always@(in8)
    begin
    case(in8)
    if(in8[7]) out3=3'b111;
    else if(in8[6]) out3=3'b110;
    else if(in8[5]) out3=3'b101;
    else if(in8[4]) out3=3'b100;
    else if(in8[3]) out3=3'b011;
    else if(in8[2]) out3=3'b010;
    else if(in8[1]) out3=3'b001;
    else if(in8[0]) out3=3'b000;
    else out3=3'bxxx;
    endcase
    end
    endmodule

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    # 3-8译码器
    module decode38(in3,out8);
    input[2:0] in3; output[7:0] out8;
    always@(in3)
    begin
    case(in3)
    3'd0:out=8'b00000001;
    3'd1:out=8'b00000010;
    3'd2:out=8'b00000100;
    3'd3:out=8'b00001000;
    3'd4:out=8'b00010000;
    3'd5:out=8'b00100000;
    3'd6:out=8'b01000000;
    3'd7:out=8'b10000000;
    default:out=8'bxxxxxxxx;
    endcase
    end
    endmodule
  2. 七段管的工作逻辑

一个七段管使用7bit信号控制7段LED灯的亮灭。若每段LED灯赋值为0,灯亮;赋值为1时灯灭。则Hex=7‘b1111001,其中hex[6]—hex[5]…..hex[0]分别对应下图1中七段管中的编号是6543210的信号。那么该信号hex[6]=1 hex[5]=1 hex[4]=1 hex[3]=1 hex[2]=0 hex[1]=0 hex[0]=1
D7-WUVSS2-D-KYQ714-D-QDR.png
GI3-C-33-MYM-J45-FJI8-AH4.jpg
SX3-ZW-8-MJ-Q7-I-O-L6-GO.jpg

实验内容

  1. 用verilog实现74LS148的功能定义并测试。
    74LS148是带有扩展功能的8-3线优先编码器,它有8个信号输入端,3个二进制码输出端(0-7),一个输入使能端(EI),一个选通输出端()和一个扩展端。使能端为“0”时,该芯片被选中,否则不被选中。选通输出端和扩展端主要用于功能扩展。
    Q0-O-Q479-Q-ZO6-FXS-3.png
    Z-J379-C1-Q-NBZ4-N-2-GAGRS.jpg
    1-N2-I0-O4-6-B-Q4-M-N-L8-G.png
    0-7 编码输入端(低电平有效)
    EI 选通输入端(低电平有效)
    A0、A1、A2 三位二进制编码输出信号即编码 输 出 端(低电平有效)
    GS 片优先编码输出端即宽展端(低电平有效)
    EO 选通输出端,即使能输出端
  2. 将8个拨动开关作为8位并行输入,即对应数码为0000_0000—-1111_1111,十进制数值为0-255,将编码对应的十进制数值显示在三个七段管上。比如若输入1000_0100对应十进制数为132,则在三个七段上显示1、3、2数字。建议七段管显示译码电路设计成模块,主模块采用模块调用的方式实现3个七段管的驱动。

实验要求

  1. 按照上面的提示完善报告
  2. 将程序编译过程中出现的主要错误及解决方案进行总结
  3. 掌握和练习数字系统的分析步骤,并将一些核心步骤进行记录
  4. 将编写的程序与仿真结果进行记录