Описание мультиплексора через цепи непрерывного назначения.
•module mpl
•(input[1:0]adr, input c0,c1,c2,c3,
•output line);
•assign line=(adr==2’d0)?c0:1’bx;
•assign line=(adr==2’d1)?c1:1’bx;
•assign line=(adr==2’d2)?c2:1’bx;
•assign line=(adr==2’d3)?c3:1’bx;
•endmodule
Описание мультиплексора через табличную память.
•module mpl
•(input[1:0]adr, input c0,c1,c2,c3,
•output line);
•reg out;
•assign line=out;
•always@*
•begin
case(adr) 2’d0: out<=c0; 2’d1: out<=c1; 2’d2: out<=c2; 2’d3: out<=c3;
………..
Разработка проекта.
•Этап 1. Моделирование. Пакет ModelSim. Программное описание устройства и функциональная симуляция.
•Этап 2. Макетирование. Пакет Quartus 15.
•Формирование загрузочного модуля проекта. Привязка выводов схемы к контактным площадкам. Загрузка модуля проекта в кристалл.
Функциональная симуляция.
• Схема для формирования файла testbench
Тестовый файл мультиплексора для коммутации 7-разрядных входов.
•`timescale 1ns/100ps
•module mpl_tb;
•reg [6:0]c70t,c71t,c72t,c73t; reg [1:0]adrt;
wire [6:0] line7t;
mpl m1(.c70(c70t),.c71(c71t),.c72(c72t),.c73(c73t),.adr(adrt),.line7(line7t)); always
begin
c70t=$unsigned($random)%127; c70t=7’h35; c71t=$unsigned($random)%127; c71t=7’h7A; c72t=$unsigned($random)%127; c72t=7’hC4; c73t=$unsigned($random)%127; c73t=7’h1D; #800;
end
initial begin adrt=0; #200;
adrt=adrt+1;
#200;
adrt=adrt+1;
200;
adrt=adrt+1;
#200; $stop; end
endmodule