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

Vhdl


X-Ray

Рекомендуемые сообщения

Необходимо на Vhdl реализовать регистр КР1533ИР32

он аналогичен КР1533ИР26 за исключением отсутсвия z-состояния

Впринципе ничего сложного, но я в VHDL не шарю.

вот мой код

--
--  File: c:\my designs\KP1533IR32\SRC\Ir32.VHD
--  created by Design Wizard: 11/07/12 12:22:45
--
--{{ Section below this comment is automatically maintained
--   and may be overwritten
--{entity {Ir32} architecture {Ir32}}
library IEEE;
use IEEE.std_logic_1164.all;
entity Ir32 is
port (
 D1: in Bit;
 D2: in Bit;
 D3: in Bit;
 D4: in Bit;
 AW0: in Bit;
 AW1: in Bit;
 AR0: in Bit;
 AR1: in Bit;
 WR: in Bit;
 RD: in Bit;
 Q1: out Bit;
 Q2: out Bit;
 Q3: out Bit;
 Q4: out Bit
);
shared variable  R11,R12,R13,R14,R21,R22,R23,R24,R31,R32,R33,R34,R41,R42,R43,R44:Bit;
end Ir32;
--}} End of automatically maintained section
architecture Ir32 of Ir32 is
begin
T1: process(D1)
begin
if WR='0' then
if AW1='0' and AW0='0' then  R11:=D1;
	 R12:=D2;
	   R13:=D3;
	 R14:=D4;
end if;
if AW1='0' and AW0='1' then  R21:=D1;
	 R22:=D2;
	   R23:=D3;
	 R24:=D4;
end if;
if AW1='1' and AW0='0' then  R31:=D1;
	 R32:=D2;
	   R33:=D3;
	 R34:=D4;
end if;
if AW1='1' and AW0='1' then  R41:=D1;
	 R42:=D2;
	   R43:=D3;
	 R44:=D4;
end if;
end if;
if RD='0' then
if AR1='0' and AR0='0' then  Q1<=R11;
	 Q2<=R12;
	   Q3<=R13;
	 Q4<=R14;
end if;
if AR1='0' and AR0='1' then  Q1<=R21;
	 Q2<=R22;
	   Q3<=R23;
	 Q4<=R24;
end if;
if AR1='1' and AR0='0' then  Q1<=R31;
	 Q2<=R32;
	   Q3<=R33;
	 Q4<=R34;
end if;
if AR1='1' and AR0='1' then  Q1<=R41;
	 Q2<=R42;
	   Q3<=R43;
	 Q4<=R44;
end if;
else if RD='1' then		  Q1<='1';
	 Q2<='1';
	   Q3<='1';
	 Q4<='1';
end if;
end if;
end process t1;
 -- <<enter your statements here>>
end Ir32;

На вэйвформах не корректно работает, кто может исправит ошибки?

Или вообще заново напишет?

вообще проблема была такая-при старте, устройство работает, но на последующие изменения на адресных входах не реагирует(

подскажите плиз

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

Реклама: ООО ТД Промэлектроника, ИНН: 6659197470, Тел: 8 (800) 1000-321

Я бы начал иначе.(Поглядел спраочник - выходы открытый коллектор. Как объявить не упомню)

PORT(
D:in std_logic_vector(3 ownto 0);
AW:in std_logic_vector(1 downto 0);
AR:in std_logic_vector(1 downto 0);
Q:out std_logic_vector(3 downto 0)
);

)

Далее.

В теле архитектуры

Process(AW, AR)
variable rg4,rg1,rg2,rg3:std_logic_vector(3 downto 0);
begin
case AW is
when "01" => rg1:=D;
when "10"=> rg2:=D;
when "11"=> rg3:=D;
when others => rg0:=D;
end case;
case AR IS
when "01" =>Q<=rg1;
when "10" => Q<=rg2;
when "11" => Q<=rg3;
when others => Q<=rg0;
end case;
end process;

Код не тестировал, но должен сработать.

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

20% скидка на весь каталог электронных компонентов в ТМ Электроникс!

Акция "Лето ближе - цены ниже", успей сделать выгодные покупки!

Плюс весь апрель действует скидка 10% по промокоду APREL24 + 15% кэшбэк и бесплатная доставка!

Перейти на страницу акции

Реклама: ООО ТМ ЭЛЕКТРОНИКС, ИНН: 7806548420, info@tmelectronics.ru, +7(812)4094849

Сейчас будет тест.Спасибо за ответ, проверю.

А открытый коллектор не влияет на логику.

С ходу:в твоём коде нет завязки на входы RD и WR, которые разрешают/запрещают чтение/запись.

Но всё равно большое спасибо!!!!!!!!

В общем начал я тестить.

Скомпилилось.Но подскажи пожалуйста как на вэйв формах подавать например на D значения.

Тоесть при моей реализации я подавал отдельно на каждый разряд(D1-D4), а когда массив-то можно D придать только одно значение(.Как быть?

Изменено пользователем X-Ray
Ссылка на комментарий
Поделиться на другие сайты

Выбираем схему BMS для корректной работы литий-железофосфатных (LiFePO4) аккумуляторов

 Обязательным условием долгой и стабильной работы Li-FePO4-аккумуляторов, в том числе и производства EVE Energy, является применение специализированных BMS-микросхем. Литий-железофосфатные АКБ отличаются такими характеристиками, как высокая многократность циклов заряда-разряда, безопасность, возможность быстрой зарядки, устойчивость к буферному режиму работы и приемлемая стоимость. Но для этих АКБ, также как и для других, очень важен контроль процесса заряда и разряда, а специализированных микросхем для этого вида аккумуляторов не так много. Инженеры КОМПЭЛ подготовили список имеющихся микросхем и возможных решений от разных производителей. Подробнее>>

Реклама: АО КОМПЭЛ, ИНН: 7713005406, ОГРН: 1027700032161

нет завязки на входы RD и WR, которые разрешают/запрещают чтение/запись.

Ну здрасьте, а упоминание process(AW,AR) в котором реакция на изменение сигналов это что?

В общем начал я тестить.

Скомпилилось.Но подскажи пожалуйста как на вэйв формах подавать например на D значения.

Тоесть при моей реализации я подавал отдельно на каждый разряд(D1-D4), а когда массив-то можно D придать только одно значение(.Как быть?

Я моделирую в моделсиме, пишу тестбенчи.

Примерно так

process
variable cnt:unsigne(3 downto 0):="0000";
constant c1:unsigned(3 downto 0):="0001";
begin
wait 100 ns; D<=std_logic_vector(cnt);
cnt:=cnt+c1;
wait for 100 ns; AR<="00";
wait for 100 ns; AR<="01"; D<=std_logic_vector(cnt);
......
......

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

Meteor77, спасибо тебе большое за ответ.

Я , как уже говорил,просто не шарю в vhdl.И как писать тестбенчи не особо вкурсе,буду разбираться.Но всё равно ОГРОМНОЕ спасибо за помощь!

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

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

  • 4 недели спустя...

Всем привет, пишу проект на VHDL ( сдивовый регистр на 24 бита , с параллельной загрузкой по 8 бит) .Ну вообщем это не важно. После написания когда написал тест бенч и почему то некторые выходы остаются неинициализированными, некоторые работает , не могу понять почему. Помогите пожалуйста.

Project.txt

tect bench.txt

post-162841-0-20306100-1355566649_thumb.jpg

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

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

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

Гость
Unfortunately, your content contains terms that we do not allow. Please edit your content to remove the highlighted words below.
Ответить в этой теме...

×   Вставлено с форматированием.   Восстановить форматирование

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

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

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

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

Загрузка...
  • Последние посетители   0 пользователей онлайн

    • Ни одного зарегистрированного пользователя не просматривает данную страницу
  • Сообщения

    • @Gomerchik а вы контролировали как меняется уровень сигнала на А1 ардуины?
    • Спасибо за совет. Автором данного проекта я не являюсь, мне нужно было воссоздать уличный датчик для метеостанции взамен пропавшего(( Из разного найденного в интернете этот проект работает с моей станцией Орегон (спасибо автору). В понедельник попробую последовать Вашему совету. Но все равно куча непоняток  как блин это работает)) Если дело в неправильной отправки команды, то как на это влияет подключение датчика температуры? Если совсем не подключать таймер, то передача идет один раз (как и прописано в программе), станция принимает и отображает, но минут через сколько-то естественно станция уже ни чего не показывает, но с таймером питание полностью не пропадает с ардуинки, но передача сигнала каким-то образом работает по таймеру.  В моем понимании данная команда подается один раз потому, что таймер должен отключать питание МК после передачи сигнала и каждые 43 сек снова подавать питание (так того требует станция).  Ардуино передает показания температуры отключается полностью и 43 секунды мк не работает.  Сейчас у меня питание пока сделано на подпитке от солнечной батареи, но пару пасмурных дней и аккумулятор съедается до отключения(
    • thickman Так и сделаю. Вытащу из бу БП.  Буду знать, как отличить. Благодарю. Заменил транзисторы на IRFB20N50K. Картина стала, совсем другой.  Похоже трудность не в драйвере, на момент подвозбуда, переходные процессы, в нем, завершены. Увеличил затворные резисторы до 50ом, стало немного лучше.  Не понятно, почему верхний ключ греется несколько сильнее. Возможно, стоит посмотреть ток в коллекторе.  Снабберные емкости временно удалил, изменений не произошло.  Замена ТГР на другой, на кольце MSTN-16A-TH, так же, результата не принесла.   irfb20n50k.pdf
    • А что нить из ассортимента активных щупов производства СССР..))
    • Типа такого: https://aliexpress.ru/item/2044864227.html?sku_id=58855020183
    • поняли неправильно. У ТЛ494 никакой защиты нет, усилители ошибки не защита, они не должны приводить к ложным импульсам. Причем тут "микруха" ?  надо нагружать ВСЁ. До сих пор вообще непонятно о каком ИИП идет речь и сколько у него каналов. Бесполезно схему рисовать? - Помогать так бесполезно. Картина кривая по самое "немогу" продолжаются картинки, снятые через ногу и без цены деления.
×
×
  • Создать...