译码器实验

实验目的

(1) 掌握七段译码器的HDL描述;

(2) 掌握HDL模块层次化设计方法。

参考设计

实验材料中给出了一个2-4译码器的设计。虚拟面板如图 1

image
图 1. 2-4译码器的虚拟面板

实验内容和要求

  1. 用HDL设计七段译码器模块,按照如下端口声明编写。

module SevenSegDecode (
  input wire [3:0] iData,
  output logic [7:0] oSeg
);

输入是4位二进制数,输出是与输入数值相对应的数码管段码,要求包含小数点但小数点不亮,0~F共16个数据的显示效果如图 2。编写完成后保存文件,文件名与模块名相同,即SevenSegDecode.sv。

七段数码管字形
图 2. 七段数码管字形
  1. 实例化七段译码器模块。

打开第一个实验的VirtualBoard.sv模板文件,将实例化七段译码器的代码添加到该模块内,如下。

//七段译码器模块实例化
SevenSegDecode ssd_inst(.iData(S[11:8]), .oSeg(SD1));

//用LED显示8个段的电平值
assign L[7:0] = SD1;

可以看到,这条语句实例化七段译码器模块,也就是将SevenSegDecode模块的端口与VirtualBoard模块中的信号连接起来;具体说来就是将4个拨动开关S11~ S8连接到七段译码器模块的输入端口iData;译码输出oSeg连接到七段数码管SD1。同时用LED指示灯显示每个段的电平值。

  1. 编译成功后在实验平台验证。

  2. 【选做】修改七段译码器模块,使其能显示“P”、“L”等尽可能多的字符。提示:输入改为5位二进制,虚拟面板增加一个开关。所扩充字符的5位编码自己规定,但0~F十六个编码要与基本任务要求一致。