реклама на сайте
подробности

 
 
 
Reply to this topicStart new topic
> Простое ОЗУ [3:0]
demsp
сообщение Mar 28 2018, 15:57
Сообщение #1


Участник
*

Группа: Участник
Сообщений: 28
Регистрация: 17-03-18
Пользователь №: 102 435



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

Сообщение отредактировал demsp - Mar 28 2018, 17:40
Go to the top of the page
 
+Quote Post
Flip-fl0p
сообщение Mar 28 2018, 17:03
Сообщение #2


В поисках себя...
****

Группа: Свой
Сообщений: 670
Регистрация: 11-06-13
Из: Санкт-Петербург
Пользователь №: 77 140



Цитата(demsp @ Mar 28 2018, 18:57) *
Делаю простое ОЗУ - создаю несколько триггреров 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.
Более того, если что-то выкладывайте - то выкладывайте полностью кусок кода, в котором ошибка. Сейчас я вижу непонятный огрызок кода, в этом огрызке написана полная ерунда, извините меня за резкость.
Go to the top of the page
 
+Quote Post
demsp
сообщение Mar 28 2018, 17:30
Сообщение #3


Участник
*

Группа: Участник
Сообщений: 28
Регистрация: 17-03-18
Пользователь №: 102 435



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


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

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

Сообщение отредактировал demsp - Mar 28 2018, 17:36
Go to the top of the page
 
+Quote Post
Flip-fl0p
сообщение Mar 28 2018, 18:24
Сообщение #4


В поисках себя...
****

Группа: Свой
Сообщений: 670
Регистрация: 11-06-13
Из: Санкт-Петербург
Пользователь №: 77 140



Цитата(demsp @ Mar 28 2018, 20:30) *

Это плохая картинка. Тут скорее показано как делать не надо в ПЛИС rolleyes.gif
Для организации памяти у производителей чипов есть заготовки файлов различного рода памяти. Лучше воспользуйтесь ими.
Или изучите что-то типа "recommended hdl coding styles" для семейства ПЛИС с которым Вы работаете.
На самый крайний случай, если это какая-то лабораторная в институте то можно и так описать:
https://ibb.co/mNpkZn
Go to the top of the page
 
+Quote Post
iosifk
сообщение Mar 28 2018, 18:37
Сообщение #5


Гуру
******

Группа: Модераторы
Сообщений: 3 955
Регистрация: 8-09-05
Из: спб
Пользователь №: 8 369



Цитата(demsp @ Mar 28 2018, 18:57) *
Делаю простое ОЗУ

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


--------------------
www.iosifk.narod.ru
Go to the top of the page
 
+Quote Post
demsp
сообщение Mar 28 2018, 20:56
Сообщение #6


Участник
*

Группа: Участник
Сообщений: 28
Регистрация: 17-03-18
Пользователь №: 102 435



Цитата(iosifk @ Mar 28 2018, 22:37) *
Для начала: ОЗУ - это когда "много" битов хранится.

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


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

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

Сообщение отредактировал demsp - Mar 28 2018, 21:02
Go to the top of the page
 
+Quote Post
OM-S
сообщение Mar 28 2018, 21:16
Сообщение #7


Участник
*

Группа: Участник
Сообщений: 19
Регистрация: 12-05-05
Из: г. Москва
Пользователь №: 4 944



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



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

Например у Ксайлинкса в документе ug687 в разделе 6 HDL coding techniques
http://www.xilinx.com/support/documentatio..._4/xst_v6s6.pdf
Go to the top of the page
 
+Quote Post
Flip-fl0p
сообщение Mar 29 2018, 04:26
Сообщение #8


В поисках себя...
****

Группа: Свой
Сообщений: 670
Регистрация: 11-06-13
Из: Санкт-Петербург
Пользователь №: 77 140



Цитата(demsp @ Mar 28 2018, 23:56) *
Дайте ссылку плиз

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

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

А в чем разница между триггером и регистром ?
Go to the top of the page
 
+Quote Post
demsp
сообщение Mar 29 2018, 12:00
Сообщение #9


Участник
*

Группа: Участник
Сообщений: 28
Регистрация: 17-03-18
Пользователь №: 102 435



Цитата(Flip-fl0p @ Mar 29 2018, 08:26) *
А в чем разница между триггером и регистром ?

триггер (в русскоязычной литературе) - это флип-флоп (в англоязычной литературе)
Вот одна и та же статья из Википедии на русском триггер
и на английском flip-flop
Go to the top of the page
 
+Quote Post

Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 22nd July 2018 - 10:20
Рейтинг@Mail.ru


Страница сгенерированна за 0.00889 секунд с 7
ELECTRONIX ©2004-2016