Перейти к содержанию
    

Простое ОЗУ [3:0]

Делаю простое ОЗУ - создаю несколько триггреров reg q (запись производится по фронту)

module my_dff (
input clk,
input d,    
output...);
    reg q;
    always @(posedge clk)
        q <= d;
assign...
endmodule

Подключаю их в основной модуль, записть в выбранный триггер произвожу демультиплексором ссылка

module my_module(
input...
output...);

//демультиплексор
reg [3:0]out;
always @ *
begin
  case( addr )
   2'd0: out = { 3'b000, clk      };
   2'd1: out = { 2'b00, clk, 1'b0 };
   2'd2: out = { 1'b0, clk, 2'b00 };
   2'd3: out = {      clk, 3'b000 };
  endcase
end

//триггеры
my_dff dff1 (
.d(d),
.clk(out[0])     );
my_dff dff2 (... );
my_dff dff3 (... );
my_dff df4 (... );

 

Но вот странно:

Запись в триггер происходит как по фронту, так и по спаду (при переключении на другой адрес) , т.е. я переключаюсь, например, с 00 на 01, и в триггер с адресом 00 производится запись (как-бы по спаду).

Если я остаюсь на одном адресе, запись нового значения по спаду не производится.

Хотите правильно : берите листок бумаги и рисуете на ней все триггеры, которые Вам нужны, все клоки, все сигналы разрешения, все входы и выходы. И когда на бумаге будет схема - описывайте её на языке HDL.

Более того, если что-то выкладывайте - то выкладывайте полностью кусок кода, в котором ошибка. Сейчас я вижу непонятный огрызок кода, в этом огрызке написана полная ерунда, извините меня за резкость.

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Вот картинка - на вход DEMUX'а подключен клок

image.jpg

 

Запись в триггеры должна происходить по фронту

always @(posedge clk)

но запись в триггер происходит также при HIGH на клоке при смене адреса (т.е. по спаду)

Изменено пользователем demsp

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Это плохая картинка. Тут скорее показано как делать не надо в ПЛИС :rolleyes:

Для организации памяти у производителей чипов есть заготовки файлов различного рода памяти. Лучше воспользуйтесь ими.

Или изучите что-то типа "recommended hdl coding styles" для семейства ПЛИС с которым Вы работаете.

На самый крайний случай, если это какая-то лабораторная в институте то можно и так описать:

https://ibb.co/mNpkZn

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Делаю простое ОЗУ

Для начала: ОЗУ - это когда "много" битов хранится.

А то, что Вы выкладываете - это скорее регистр с произвольной записью битов.

А вот далее - это просто тихий ужас, летящий на крыльях верилога...

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Для начала: ОЗУ - это когда "много" битов хранится.

Спасибо, действительно, в этом простом ОЗУ вместо триггеров должны быть регистры, но сути вопроса это не меняет.

 

 

Для организации памяти у производителей чипов есть заготовки файлов различного рода памяти. Лучше воспользуйтесь ими.

Дайте ссылку плиз

Изменено пользователем demsp

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Спасибо, действительно, в этом простом ОЗУ вместо триггеров должны быть регистры, но сути вопроса это не меняет.

 

 

 

Дайте ссылку плиз

Например у Ксайлинкса в документе ug687 в разделе 6 HDL coding techniques

http://www.xilinx.com/support/documentatio..._4/xst_v6s6.pdf

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Дайте ссылку плиз

https://google.gik-team.com/?q=recommended+hdl+coding+styles

 

Спасибо, действительно, в этом простом ОЗУ вместо триггеров должны быть регистры, но сути вопроса это не меняет.

А в чем разница между триггером и регистром ?

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

А в чем разница между триггером и регистром ?

триггер (в русскоязычной литературе) - это флип-флоп (в англоязычной литературе)

Вот одна и та же статья из Википедии на русском триггер

и на английском flip-flop

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...