Скачиваний:
7
Добавлен:
31.05.2023
Размер:
94.41 Кб
Скачать

Выполнили:

Лабораторная работа 5

РАЗРАБОТКА МОДУЛЯ ДЛЯ ВЗАИМОДЕЙСТВИЯ С

СЕМИСЕГМЕНТНЫМ ИНДИКАТОРОМ

Цель работы

Разработка модуля для работы с семигементным индикатором с помощью переключателей, с которых будет считываться 4-битное число и выводиться на индикатор. Написание тестового модуля. Проверка работоспособности на отладочной плате zedboard.

1. Принцип

Семисегментный индикатор устроен по приципу дешифратора. Имеем 4 значения на входе в двоичной системе счисления от 0 до 15. На выходе получаем 7 позиций, которые соответствуют сегментам на дисплее. Восьмой сегмент соответствует точке.

2. Модули

module top

(

input global_clk,

input [3:0] switches,

output [7:0] seven_segm_disp

);

ssd_driver top_ssd( .clk (global_clk), .swt (switches), .ssd (seven_segm_disp) );

endmodule

module ssd_driver

(

input clk,

input [3:0] swt,

output reg [7:0] ssd

);

always @(posedge clk)

begin

case ( swt[3:0] )

4'b0000: ssd <= 8'b11111110;

4'b0001: ssd <= 8'b10110000;

4'b0010: ssd <= 8'b11101101;

4'b0011: ssd <= 8'b11111001;

4'b0100: ssd <= 8'b10110011;

4'b0101: ssd <= 8'b11011011;

4'b0110: ssd <= 8'b11011111;

4'b0111: ssd <= 8'b11110000;

4'b1000: ssd <= 8'b11111111;

4'b1001: ssd <= 8'b11110011;

4'b1010: ssd <= 8'b11110111;

4'b1011: ssd <= 8'b10011111;

4'b1100: ssd <= 8'b11001110;

4'b1101: ssd <= 8'b10111101;

4'b1110: ssd <= 8'b11001111;

4'b1111: ssd <= 8'b11000111;

endcase

end

endmodule

3. Тестовый модуль

`timescale 1ns / 1ps

module top_tb();

reg clk = 0;

reg [3:0] swt_tb;

wire [7:0] ssd_tb;

top SSD ( .switches( swt_tb ), .seven_segm_disp( ssd_tb ), .global_clk( clk ) );

integer i;

initial

begin

for( i = 0; i < 16; i = i + 1 )

#10 swt_tb = i;

end

always #5 clk = ~clk;

endmodule

4. Содержимое xdc файла

set_property PACKAGE_PIN AA9 [get_ports {seven_segm_disp[7]}]

set_property PACKAGE_PIN AA11 [get_ports {seven_segm_disp[6]}]

set_property PACKAGE_PIN Y11 [get_ports {seven_segm_disp[5]}]

set_property PACKAGE_PIN Y10 [get_ports {seven_segm_disp[4]}]

set_property PACKAGE_PIN W11 [get_ports {seven_segm_disp[3]}]

set_property PACKAGE_PIN W12 [get_ports {seven_segm_disp[2]}]

set_property PACKAGE_PIN V10 [get_ports {seven_segm_disp[1]}]

set_property PACKAGE_PIN W8 [get_ports {seven_segm_disp[0]}]

set_property IOSTANDARD LVCMOS33 [get_ports {seven_segm_disp[7]}]

set_property IOSTANDARD LVCMOS33 [get_ports {seven_segm_disp[6]}]

set_property IOSTANDARD LVCMOS33 [get_ports {seven_segm_disp[5]}]

set_property IOSTANDARD LVCMOS33 [get_ports {seven_segm_disp[4]}]

set_property IOSTANDARD LVCMOS33 [get_ports {seven_segm_disp[3]}]

set_property IOSTANDARD LVCMOS33 [get_ports {seven_segm_disp[2]}]

set_property IOSTANDARD LVCMOS33 [get_ports {seven_segm_disp[1]}]

set_property IOSTANDARD LVCMOS33 [get_ports {seven_segm_disp[0]}]

set_property IOSTANDARD LVCMOS33 [get_ports global_clk]

set_property PACKAGE_PIN Y9 [get_ports global_clk]

5. Временная диаграмма

6. Вывод

Работа программы корректна, все вычисления верны.

Соседние файлы в предмете Основы проектирования электронных средств на ПЛИС