МАРСОХОД

Open Source Hardware Project

Добро пожаловать, Гость
Логин: Пароль: Запомнить меня
  • Страница:
  • 1

ТЕМА: Простейшие регистры с адресом

Простейшие регистры с адресом 3 года 9 мес. назад #2999

  • Alucard
  • Alucard аватар Автор темы
  • Не в сети
  • Завсегдатай
  • Завсегдатай
  • Сообщений: 208
  • Спасибо получено: 20
Добрый день.
Как следует делать регистр в ПЛИС для хранения данных? Чтобы какое-то устройство могло оттуда их забрать. Так я реализовал input reg:

module register_i (
input wire clk, //Тактовая

input wire [7:0] data_in, //Входящие данные
input wire [15:0] addr, //Уникальный адрес
input wire wr, //Сигнал записи

output reg [7:0] data_out, //Сам регистр для ПЛИС
input wire clr //Сброс состояния
);

parameter address = 0;
parameter clear = 0;

always @(posedge clk)
begin
if (wr && address == addr)
data_out <= data_in;

if (clr)
data_out <= clear;
end

endmodule

Он сгенирировался как dff, а стоит ли делать регистры как M4K ячейку? И еще вопрос: как сделать output регистр с уникальным адресом, и чтобы они друг другу не мешали (если их много).
Можно сказать, я хочу реализовать регистры данных, подобные как у всякой периферии микроконтроллеров. (мол есть _I, _O и туда контроллер может писать/читать) :)
Заранее спасибо.

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Последнее редактирование: от Alucard.

Простейшие регистры с адресом 3 года 9 мес. назад #3001

Я думаю что такие регистры лучше делать по отдельности. Как любой класический регистр например 74374 - у которого есть вход данных с стробом, и выход для чтения с разрешением. Ну и в вашем случае появится ещё одна шина с прямо с регистров перед выходным буфером для управления внутренней схемой. Адрес регистров надо решать в составе управляющего модуля или использовать отдельный адресный регистр.

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Последнее редактирование: от wowa.

Простейшие регистры с адресом 3 года 9 мес. назад #3002

  • Alucard
  • Alucard аватар Автор темы
  • Не в сети
  • Завсегдатай
  • Завсегдатай
  • Сообщений: 208
  • Спасибо получено: 20

wowa пишет: Я думаю что такие регистры лучше делать по отдельности. Как любой класический регистр например 74374 - у которого есть вход данных с стробом, и выход для чтения с разрешением. Ну и в вашем случае появится ещё одна шина с прямо с регистров перед выходным буфером для управления внутренней схемой. Адрес регистров надо решать в составе управляющего модуля или использовать отдельный адресный регистр.

Этот регистр (который я сделал), он ведь и будет отдельным, верно? Я до конца не понял, как реализовать выход с разрешением для регистра (если их несколько): tri что ли ставить и все соединять перед буфером?
Меня также интересует возможность реализации схемы с несколькими input, output регистрами, которые будут иметь уникальный адрес, и с input fifo с также фиксированным адресом.

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Простейшие регистры с адресом 3 года 9 мес. назад #3003

Именно - делать tri-выходы. Делается ОДИН регистр как модуль. Потом делается модуль "регистры" и в него встраивается несколько регистров (тех что делали раньше) и дешифратор для адреса. Возможно нужно будет сделать регистр без tri-выходов для адресного дешифратора. Работать с этим так: записываю адрес в регистр адреса и потом записываю в регистр данных. Всё.
Спасибо сказали: Alucard

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Простейшие регистры с адресом 3 года 9 мес. назад #3004

  • Alucard
  • Alucard аватар Автор темы
  • Не в сети
  • Завсегдатай
  • Завсегдатай
  • Сообщений: 208
  • Спасибо получено: 20

wowa пишет: Именно - делать tri-выходы. Делается ОДИН регистр как модуль. Потом делается модуль "регистры" и в него встраивается несколько регистров (тех что делали раньше) и дешифратор для адреса. Возможно нужно будет сделать регистр без tri-выходов для адресного дешифратора. Работать с этим так: записываю адрес в регистр адреса и потом записываю в регистр данных. Всё.

А M4K блоки использовать или на логике все регистры построить?

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Простейшие регистры с адресом 3 года 9 мес. назад #3005

  • Alucard
  • Alucard аватар Автор темы
  • Не в сети
  • Завсегдатай
  • Завсегдатай
  • Сообщений: 208
  • Спасибо получено: 20
Код для выходного регистра (output), сделал с tri внутри.

module register_o (
input wire clk, //Тактовая

input wire [7:0] data_in, //Даннные для записи
input wire [15:0] addr, //Уникальный адрес
input wire rd, //Сигнал чтения от устройства
input wire wr, //Запись

inout reg [7:0] data_out, //Выход данные для устройства
input wire clr //Очистка ячейки
);

parameter address = 0;
parameter clear = 0;

reg [7:0] data;

always @(posedge clk)
begin
if (rd && address == addr)
data_out <= data;
else
data_out <= 8'bZZZZZZZZ;

if (wr)
data <= data_in;

if (clr)
data <= clear;
end

endmodule

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Простейшие регистры с адресом 3 года 9 мес. назад #3006

Их нужно делать отдельно в том случае естли надо будет независимо использовать биты из регистров. Если это будут М4К блоки - то им нужен будет и адрес. А так можно сделать, например, 4 регистров по 8 бит и оновременно иметь 32 бита настроек. Адрес надо выкинуть. А встроить сигнал активации. Ну и сделать выкинуть такт - ненужен он там. Сделать всё с чуствительностью на WR, OE, Reset...

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

  • Страница:
  • 1
Время создания страницы: 0.150 секунд

facebook  GitHub  YouTube  Twitter
Вы здесь: Начало Forum Наш форум Языки программирования Простейшие регистры с адресом