Заглавная страница Избранные статьи Случайная статья Познавательные статьи Новые добавления Обратная связь КАТЕГОРИИ: АрхеологияБиология Генетика География Информатика История Логика Маркетинг Математика Менеджмент Механика Педагогика Религия Социология Технологии Физика Философия Финансы Химия Экология ТОП 10 на сайте Приготовление дезинфицирующих растворов различной концентрацииТехника нижней прямой подачи мяча. Франко-прусская война (причины и последствия) Организация работы процедурного кабинета Смысловое и механическое запоминание, их место и роль в усвоении знаний Коммуникативные барьеры и пути их преодоления Обработка изделий медицинского назначения многократного применения Образцы текста публицистического стиля Четыре типа изменения баланса Задачи с ответами для Всероссийской олимпиады по праву Мы поможем в написании ваших работ! ЗНАЕТЕ ЛИ ВЫ?
Влияние общества на человека
Приготовление дезинфицирующих растворов различной концентрации Практические работы по географии для 6 класса Организация работы процедурного кабинета Изменения в неживой природе осенью Уборка процедурного кабинета Сольфеджио. Все правила по сольфеджио Балочные системы. Определение реакций опор и моментов защемления |
Текст программы асинхронного ⇐ ПредыдущаяСтр 6 из 6
ИНТЕРФЕЙСА И ТЕСТОВОГО МОДУЛЯ
Module Decoder( input [2:0] A,//трехразрядная шина А Input CLK,//вход синхронизации output [7:0] X / /востмиразрядная выходная шина ); //объявление входов/выходов wire CLK; wire [2:0] A; reg [7:0] X; //реагирование на любой входящий сигнал always @* Begin X =8' b 00000000; //Обнуление шины X (=0) X [ A ] = 1;// проводу с номером А из шины X присвоить 1 End Endmodule Module Counter( Input CLK,//вход синхронизации Input CE,//разрешающий вход output [2:0] Q //выходная трехразрядная шина );
//объявление входов/выходов wire CLK; wire CE; reg [2:0] Q = 0; //реакция на фронт (0 - > 1)синхронизирующего сигнала always @(posedge CLK) // если разрешена работа If(CE) Begin Q = Q +1;//увеличение числа на выходе End Endmodule Module Multiplexer( Input CLK,//вход синхронизации Input CE,//разрешающий вход input [2:0] A,//двухразрядная шина A input [7:0] D,//восьмиразрядная шина D Output F //выход F ); //объявление.. //входов/выходов,.. wire CLK; wire CE; wire [2:0] A; wire [7:0] D; //.., вспомогательных регистров, и.. wire [7:0] DD; reg F; //.., и включаемых модулей Decoder DC _1(CLK, A, D); //реакция на любое изменение входящих сигналов always @* //если нразрешена работа If (CE) Begin F = D [ A ]&& DD [ A ];//подать на выход F сигнал с провода с номером A из шин D и DD End Endmodule Module BuferFIFO( Input RST,//вход сброса Input LOAD,//вход загрузки (записи) Input READ,//вход чтения input [7:0] DATA,//восьмиразрядная шина ввода данных DATA output [7:0] OUT //восьмиразрядная шина вывода данных OUT ); //объявление входов/выходов wire RST; wire LOAD; wire READ; wire [7:0] DATA; reg [7:0] OUT; //объявление вспомогательных регистров: //счетного i //памяти database reg [3:0] i; reg [7:0] database [6:0]; //начальная инициализация //обнуление счетного регистра //обнуление выходной шины Initial Begin i=0; OUT = 0; End //реакция на фронт сигналов READ,RST,LOAD always @ ( Posedge READ or Posedge RST or Posedge LOAD) Begin //реакция на сброс If (RST) Begin //очистка памяти через счетчик (каждый i-ый восьмиразрядный регистр for(i=0; i<=6; i=i+1) Begin database[i] = 8'HXX; End End Else //реакция на загрузку If(LOAD) Begin //запись данных в буфер for(i=0; i<=6; i=i+1) Begin database[6-i] = database[6-(i+1)]; End database[0]=DATA;
End Else //реакция на чтение If(READ) Begin //выгрузка данных из буфера на шину дынных OUT=database[6]; for(i=0; i<=6; i=i+1) Begin database[6-i] = database[6-(i+1)]; End End End Endmodule Module Transmitter( input [7:0] DATA,//восьмиразрядная шина данных input RST_buf,//сброс буфера input LOAD_buf,// загрузка в буфер input READ _ buf,//чтение из буфера Input CLK,//вход синхронизации Output WORD / /выходной провод ); //объявление входов/выходов wire [7:0] DATA; wire RST_buf; wire LOAD_buf; wire READ_buf; wire CLK; wire WORD; wire [7:0] out_buf; wire [2:0] timer; //объявление входящих модулей // и перенаправление им сигналов Counter CT_1(CLK, READ_buf, timer); BuferFIFO BF_1(RST_buf, LOAD_buf, READ_buf, DATA, out_buf); Multiplexer MUX_1(CLK, READ_buf, timer, out_buf, WORD); Endmodule module Testbench; //Входы (Inputs) //объявление входов reg [7:0] DATA; reg RST_buf; reg LOAD_buf; reg READ_buf; reg CLK; //Выходы (Outputs) //объявление выходов wire WORD; //объявление тестируемого модуля //Instantiate the Unit Under Test (UUT) Transmitter uut ( DATA(DATA), .RST_buf(RST_buf), .LOAD_buf(LOAD_buf), .READ_buf(READ_buf), CLK(CLK), WORD(WORD) ); //обнуление значений Initial Forever Begin #5; CLK = ~CLK; End Initial Begin // Инициализация входов DATA = 83;//подача даных для записи в буфер RST _ buf = 0;//не очищать буфер LOAD _ buf = 1;//загрузить в буфер данные с шины DATA READ _ buf = 0;//отключение чтения из буфера CLK = 0;//синхроимпуль в 0 #10;//подача сигнала в течение 10 нс //ЗАПИСЬ В БУФЕР LOAD _ buf =0;//отключить загрузку в буфер #10;;//подача сигнала в течение 10 нс LOAD _ buf =1;//включить загрузку в буфер DATA = 80;//подача данных для записи в буфер числа 80 #10;;//подача сигнала в течение 10 нс LOAD_buf = 0; #10; LOAD_buf = 1; DATA = 65; #10; LOAD_buf = 0; #10; LOAD_buf = 1; DATA = 82; #10; LOAD_buf = 0; #10; LOAD_buf = 1; DATA = 84; #10; LOAD_buf = 0; #10; LOAD_buf = 1; DATA = 65; #10; LOAD_buf = 0; #10; LOAD_buf = 1; DATA = 75; #10;
//ЧТЕНИЕ ИЗ БУФЕРА LOAD_buf = 0; READ_buf = 1; #80; READ_buf = 0; #5; READ_buf = 1; #80; READ_buf = 0; #5; READ_buf = 1; #80; READ_buf = 0; #5; READ_buf = 1; #80; READ_buf = 0; #5; READ_buf = 1; #80; READ_buf = 0; #5; READ_buf = 1; #80; READ_buf = 0; #5; READ_buf = 1; #80; READ_buf = 0; #100; End Endmodule
|
|||||
Последнее изменение этой страницы: 2019-08-19; просмотров: 329; Нарушение авторского права страницы; Мы поможем в написании вашей работы! infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 3.137.171.121 (0.027 с.) |