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

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

Делаю простое ОЗУ
Изменено пользователем demsp

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


Ссылка на сообщение
Поделиться на другие сайты
Цитата(demsp @ Mar 28 2018, 18:57) <{POST_SNAPBACK}>
Делаю простое ОЗУ - создаю несколько триггреров 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'а подключен клок


Запись в триггеры должна происходить по фронту
Код
always @(posedge clk)

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

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


Ссылка на сообщение
Поделиться на другие сайты
Цитата(demsp @ Mar 28 2018, 20:30) <{POST_SNAPBACK}>

Это плохая картинка. Тут скорее показано как делать не надо в ПЛИС rolleyes.gif
Для организации памяти у производителей чипов есть заготовки файлов различного рода памяти. Лучше воспользуйтесь ими.
Или изучите что-то типа "recommended hdl coding styles" для семейства ПЛИС с которым Вы работаете.
На самый крайний случай, если это какая-то лабораторная в институте то можно и так описать:
https://ibb.co/mNpkZn

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


Ссылка на сообщение
Поделиться на другие сайты
Цитата(demsp @ Mar 28 2018, 18:57) <{POST_SNAPBACK}>
Делаю простое ОЗУ

Для начала: ОЗУ - это когда "много" битов хранится.
А то, что Вы выкладываете - это скорее регистр с произвольной записью битов.
А вот далее - это просто тихий ужас, летящий на крыльях верилога...

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


Ссылка на сообщение
Поделиться на другие сайты
Цитата(iosifk @ Mar 28 2018, 22:37) <{POST_SNAPBACK}>
Для начала: ОЗУ - это когда "много" битов хранится.

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


Цитата(Flip-fl0p @ Mar 28 2018, 22:24) <{POST_SNAPBACK}>
Для организации памяти у производителей чипов есть заготовки файлов различного рода памяти. Лучше воспользуйтесь ими.

Дайте ссылку плиз
Изменено пользователем demsp

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


Ссылка на сообщение
Поделиться на другие сайты
Цитата(demsp @ Mar 28 2018, 23:56) <{POST_SNAPBACK}>
Спасибо, действительно, в этом простом ОЗУ вместо триггеров должны быть регистры, но сути вопроса это не меняет.



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

Например у Ксайлинкса в документе ug687 в разделе 6 HDL coding techniques
http://www.xilinx.com/support/documentatio..._4/xst_v6s6.pdf

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


Ссылка на сообщение
Поделиться на другие сайты
Цитата(demsp @ Mar 28 2018, 23:56) <{POST_SNAPBACK}>
Дайте ссылку плиз

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

Цитата(demsp @ Mar 28 2018, 23:56) <{POST_SNAPBACK}>
Спасибо, действительно, в этом простом ОЗУ вместо триггеров должны быть регистры, но сути вопроса это не меняет.

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

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


Ссылка на сообщение
Поделиться на другие сайты
Цитата(Flip-fl0p @ Mar 29 2018, 08:26) <{POST_SNAPBACK}>
А в чем разница между триггером и регистром ?

триггер (в русскоязычной литературе) - это флип-флоп (в англоязычной литературе)
Вот одна и та же статья из Википедии на русском триггер
и на английском flip-flop

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


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

Для публикации сообщений создайте учётную запись или авторизуйтесь

Вы должны быть пользователем, чтобы оставить комментарий

Создать учетную запись

Зарегистрируйте новую учётную запись в нашем сообществе. Это очень просто!

Регистрация нового пользователя

Войти

Уже есть аккаунт? Войти в систему.

Войти
Авторизация