Заглавная страница Избранные статьи Случайная статья Познавательные статьи Новые добавления Обратная связь FAQ Написать работу КАТЕГОРИИ: ТОП 10 на сайте Приготовление дезинфицирующих растворов различной концентрацииТехника нижней прямой подачи мяча. Франко-прусская война (причины и последствия) Организация работы процедурного кабинета Смысловое и механическое запоминание, их место и роль в усвоении знаний Коммуникативные барьеры и пути их преодоления Обработка изделий медицинского назначения многократного применения Образцы текста публицистического стиля Четыре типа изменения баланса Задачи с ответами для Всероссийской олимпиады по праву
Мы поможем в написании ваших работ! ЗНАЕТЕ ЛИ ВЫ?
Влияние общества на человека
Приготовление дезинфицирующих растворов различной концентрации Практические работы по географии для 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; просмотров: 418; Нарушение авторского права страницы; Мы поможем в написании вашей работы! infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 216.73.216.214 (0.006 с.) |