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

 
 
2 страниц V   1 2 >  
Reply to this topicStart new topic
> PISO VHDL, PISO VHDL
MAXHAX
сообщение Apr 12 2018, 12:16
Сообщение #1





Группа: Участник
Сообщений: 8
Регистрация: 10-01-18
Пользователь №: 100 998



Всем день добрый. Необходима некоторая помощь с регистром, т.к. я уже не могу найти где моя ошибка.
CODE
library IEEE;
use IEEE.STD_LOGIC_1164.ALL;

entity shift is
Port ( clk : in STD_LOGIC;
reset: in STD_LOGIC;
load : in STD_LOGIC;
shift: in STD_LOGIC;
D : in STD_LOGIC_VECTOR (7 downto 0);
Q : out STD_LOGIC);
end shift;

architecture Behavioral of shift is

signal sr: std_logic_vector(7 downto 0) := (others=>'0');

begin

process (clk,load,D,)
begin
if (load = '1') then
sr <= D;
elsif (clk'event and clk = '1') then
if (shift = '1') then
sr <= sr(0) & sr(7 downto 1);
end if;
end if;
end process;

Q <= sr(0);

end Behavioral;

В общем проблема состоит в том, что на выходе выводит неверный сигнал. На скрине я выделил лишнее, т.е. он заканчивает этот сигнал по спаду, хотя должен по фронту по сути идти



Да и второй сигнал тоже смещен на 1 такт по clk
Go to the top of the page
 
+Quote Post
Burenkov Sergey
сообщение Apr 12 2018, 12:47
Сообщение #2


Частый гость
**

Группа: Участник
Сообщений: 82
Регистрация: 10-01-13
Пользователь №: 75 145



У вас timing simulation, сделайте behavioral
С кодом все ок, должно работать
Go to the top of the page
 
+Quote Post
iosifk
сообщение Apr 12 2018, 12:48
Сообщение #3


Гуру
******

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



Цитата(MAXHAX @ Apr 12 2018, 15:16) *
begin

process (clk,load,D,)
begin
if (load = '1') then
sr <= D;
elsif (clk'event and clk = '1') then
if (shift = '1') then
sr <= sr(0) & sr(7 downto 1);
end if;
end if;
end process;

Q <= sr(0);


Да и второй сигнал тоже смещен на 1 такт по clk

У Вас на картинке load и shift присутствуют одновременно. Так должно быть? И что при этом происходит? Кто имеет более высокий приоритет?


--------------------
www.iosifk.narod.ru
Go to the top of the page
 
+Quote Post
Tausinov
сообщение Apr 12 2018, 12:49
Сообщение #4


Частый гость
**

Группа: Участник
Сообщений: 135
Регистрация: 19-10-13
Пользователь №: 78 795



На первый взгляд, никакого криминала в коде нет. Единственное, что смущает - запятая после последнего сигнала в списке чувствительности.
Было бы удобнее, если бы вы добавили еще и тестбенч, чтобы была возможность самому "пощупать".
Go to the top of the page
 
+Quote Post
MAXHAX
сообщение Apr 12 2018, 12:59
Сообщение #5





Группа: Участник
Сообщений: 8
Регистрация: 10-01-18
Пользователь №: 100 998



Цитата(iosifk @ Apr 12 2018, 15:48) *
У Вас на картинке load и shift присутствуют одновременно. Так должно быть? И что при этом происходит? Кто имеет более высокий приоритет?

Shift - это тот же enable, просто разрешающий сигнал
Load - использую как сигнал загрузки

Цитата(Burenkov Sergey @ Apr 12 2018, 15:47) *
У вас timing simulation, сделайте behavioral
С кодом все ок, должно работать

В квартусовском симуляторе могу выбрать только timing и functional
Go to the top of the page
 
+Quote Post
Burenkov Sergey
сообщение Apr 12 2018, 13:03
Сообщение #6


Частый гость
**

Группа: Участник
Сообщений: 82
Регистрация: 10-01-13
Пользователь №: 75 145



Цитата(MAXHAX @ Apr 12 2018, 15:59) *
В квартусовском симуляторе могу выбрать только timing и functional

functional значит выбирайте
Go to the top of the page
 
+Quote Post
iosifk
сообщение Apr 12 2018, 13:11
Сообщение #7


Гуру
******

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



Цитата(MAXHAX @ Apr 12 2018, 15:59) *
Shift - это тот же enable, просто разрешающий сигнал
Load - использую как сигнал загрузки

Ответ не принимается!
Так все таки, когда два эти сигнала действуют одновременно, что происходит? Сдвиг или загрузка?


--------------------
www.iosifk.narod.ru
Go to the top of the page
 
+Quote Post
MAXHAX
сообщение Apr 12 2018, 13:20
Сообщение #8





Группа: Участник
Сообщений: 8
Регистрация: 10-01-18
Пользователь №: 100 998



Цитата(Burenkov Sergey @ Apr 12 2018, 16:03) *
functional значит выбирайте

теперь здесь идет не по clk, а по load идет, на скрине видно что по первому и 3-ему time bar они идут неверно



Цитата(iosifk @ Apr 12 2018, 16:11) *
Ответ не принимается!
Так все таки, когда два эти сигнала действуют одновременно, что происходит? Сдвиг или загрузка?

Насколько я понимаю, чтобы ачать разрешать сдвигать, сперва должна произойти загрузка, значит load в большем приоритете?
Go to the top of the page
 
+Quote Post
Tausinov
сообщение Apr 12 2018, 13:24
Сообщение #9


Частый гость
**

Группа: Участник
Сообщений: 135
Регистрация: 19-10-13
Пользователь №: 78 795



Цитата(MAXHAX @ Apr 12 2018, 16:20) *
теперь здесь идет не по clk, а по load идет, на скрине видно что по первому и 3-ему time bar они идут неверно


Почему неверно? Сейчас все четко.
Go to the top of the page
 
+Quote Post
Burenkov Sergey
сообщение Apr 12 2018, 13:24
Сообщение #10


Частый гость
**

Группа: Участник
Сообщений: 82
Регистрация: 10-01-13
Пользователь №: 75 145



Цитата(MAXHAX @ Apr 12 2018, 16:20) *
теперь здесь идет не по clk, а по load идет, на скрине видно что по первому и 3-ему time bar они идут неверно

load у вас асинхронный, так и будет. Хотите чтоб он был синхронный, перенесите его внутрь if (clk'event and clk = '1')
Все достаточно прозрачно - если load - параллельная загрузка. если не load, то ждем клок. load главнее
if (load = '1') then
...
elsif (clk'event and clk = '1')
...
Go to the top of the page
 
+Quote Post
MAXHAX
сообщение Apr 12 2018, 13:31
Сообщение #11





Группа: Участник
Сообщений: 8
Регистрация: 10-01-18
Пользователь №: 100 998



Цитата(Tausinov @ Apr 12 2018, 16:24) *
Почему неверно? Сейчас все четко.

мне надо, чтобы перед 3-им time bar было пол такта в нуле

Цитата(Burenkov Sergey @ Apr 12 2018, 16:24) *
load у вас асинхронный, так и будет. Хотите чтоб он был синхронный, перенесите его внутрь if (clk'event and clk = '1')

что-то я вообще не могу придумать как это сделать, вообще под конец дня голова не варит
Go to the top of the page
 
+Quote Post
Burenkov Sergey
сообщение Apr 12 2018, 13:33
Сообщение #12


Частый гость
**

Группа: Участник
Сообщений: 82
Регистрация: 10-01-13
Пользователь №: 75 145



Цитата(MAXHAX @ Apr 12 2018, 16:31) *
мне надо, чтобы перед 3-им time bar было пол такта в нуле


что-то я вообще не могу придумать как это сделать, вообще под конец дня голова не варит

У вас данные при загрузке 0x81, младший бит в 1. Сделайте его в 0 и тогда будет пол такта в 0
Go to the top of the page
 
+Quote Post
MAXHAX
сообщение Apr 12 2018, 13:58
Сообщение #13





Группа: Участник
Сообщений: 8
Регистрация: 10-01-18
Пользователь №: 100 998



Цитата(Burenkov Sergey @ Apr 12 2018, 16:33) *
У вас данные при загрузке 0x81, младший бит в 1. Сделайте его в 0 и тогда будет пол такта в 0

ок, а как сделать синхронный load
Go to the top of the page
 
+Quote Post
iosifk
сообщение Apr 12 2018, 14:01
Сообщение #14


Гуру
******

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



Цитата(MAXHAX @ Apr 12 2018, 16:58) *
ок, а как сделать синхронный load

А что такое "список чувствительности" у процесса?
Что означает вот эта строка: process (clk,load,D,) ? Когда и по какому сигналу запускается процесс?
Что такое "синхронное проектирование"?

Много вопросов, да? sm.gif


--------------------
www.iosifk.narod.ru
Go to the top of the page
 
+Quote Post
MAXHAX
сообщение Apr 12 2018, 14:07
Сообщение #15





Группа: Участник
Сообщений: 8
Регистрация: 10-01-18
Пользователь №: 100 998



Цитата(iosifk @ Apr 12 2018, 17:01) *
А что такое "список чувствительности" у процесса?
Что означает вот эта строка: process (clk,load,D,) ? Когда и по какому сигналу запускается процесс?
Что такое "синхронное проектирование"?

Много вопросов, да? sm.gif

от всех вопросов голова сейчас взорвется))
Go to the top of the page
 
+Quote Post

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

 


RSS Текстовая версия Сейчас: 18th August 2018 - 23:10
Рейтинг@Mail.ru


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