Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
otvety_latypov_gotovie!!!.doc
Скачиваний:
1
Добавлен:
01.05.2025
Размер:
1.05 Mб
Скачать
  1. Реализация генератора последовательностей.

Используется генератор М-последовательностей. Используемый примитивный полином: f(x)= x^5+x^3+1.

module CRC5_D8;

// polynomial: (0 3 5)

// data width: 8

// convention: the first serial bit is D[7]

function [4:0] nextCRC5_D8;

input [7:0] Data;

input [4:0] crc;

reg [7:0] d;

reg [4:0] c;

reg [4:0] newcrc;

begin

d = Data;

c = crc;

newcrc[0] = d[6] ^ d[5] ^ d[4] ^ d[2] ^ d[0] ^ c[1] ^ c[2] ^ c[3];

newcrc[1] = d[7] ^ d[6] ^ d[5] ^ d[3] ^ d[1] ^ c[0] ^ c[2] ^ c[3] ^ c[4];

newcrc[2] = d[7] ^ d[6] ^ d[4] ^ d[2] ^ c[1] ^ c[3] ^ c[4];

newcrc[3] = d[7] ^ d[6] ^ d[4] ^ d[3] ^ d[2] ^ d[0] ^ c[0] ^ c[1] ^ c[3] ^ c[4];

newcrc[4] = d[7] ^ d[5] ^ d[4] ^ d[3] ^ d[1] ^ c[0] ^ c[1] ^ c[2] ^ c[4];

nextCRC5_D8 = newcrc;

end

endfunction

endmodule

  1. Реализация мультивибратора.

 Этот черный ящик будет запоминать значение a или b в момент подачи на него сигнала clock.

Что именно он запомнит, будет зависеть от значения управляющего сигнала switch. При подаче сигнала reset модуль все забудет и станет выдавать 0.

module trig(clock, a, b, switch, reset, out); input clock, reset;         //Тактовая частота и сброс input a, b;                    //Входы input switch;                 //Управляющий сигнал

output out;                   //Выход триггера. Здесь будет то, что он запомнил reg out;                        //Пояснили, что это кусочек памяти

wire in; assign in = switch ? a : b;          //Жесткая привязка assign in = a;                          //RS-триггер, где Set - это «a», а  Reset - «reset»

always @(posedge clock or posedge reset)     //Если пришел клок или ресет if (reset)                                              //Если ресет, то обнуляем выход out <= 0; else    if (in==1)                                                //Иначе обновляем значение out <= in; endmodule

  1. Реализация одновибратора.

Одновибраторы ("ждущие мультивибраторы", английское название "Monostable Multivibrator") представляют собой микросхемы, которые в ответ на входной сигнал (логический уровень или фронт) формируют выходной импульс заданной длительности. Длительность определяется внешними времязадающими резисторами и конденсаторами. То есть можно считать, что у одновибраторов есть внутренняя память, но эта память хранит информацию о входном сигнале строго заданное время, а потом информация исчезает. На схемах одновибраторы обозначаются буквами G1.

В стандартные серии микросхем входят одновибраторы двух основных типов (отечественное обозначение функции микросхемы - АГ):

  • Одновибраторы без перезапуска (АГ1 - одиночный одновибратор, АГ4 - два одновибратора в корпусе).

  • Одновибраторы с перезапуском (АГ3 - два одновибратора в корпусе).

Разница между этими двумя типами иллюстрируется рис. 6.10Одновибратор без перезапуска не реагирует на входной сигнал до окончания своего выходного импульса. Одновибратор с перезапуском начинает отсчет нового времени выдержки Т с каждым новым входным сигналом независимо от того, закончилось ли предыдущее время выдержки. В случае, когда период следования входных сигналов меньше времени выдержки Т, выходной импульс одновибратора с перезапуском не прерывается. Если период следования входных запускающих импульсов больше времени выдержки одновибратора Т, то оба типа одновибраторов работают одинаково.

Рис. 6.10. Принцип работы одновибраторов без перезапуска и с перезапуском

module OnePulse(Clk,St,D,Ou); parameter M=8; input Clk,St; input [M-1:0] D; output Ou;  reg [M-1:0] rCount; reg rS,rR; assign Ou=rR; //синхронизируем запуск к фронту Clk always @(posedge St or posedge rR) begin  if (rR) rS<=0; else rS<=1; end //одновибратор always @(posedge Clk) begin  if (~rR) rCount<=D; else  rCount<=rCount-1;  if (rS) rR<=1; else if (rCount==0 && rR) rR<=0; end endmodule

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]