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

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 пользователей онлайн

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

    • Ну так теперь фигня вопрос. Проверить, что кнопки невозможно замкнуть одновременно, да определить, на какой ток транзисторы нужны. По характеристикам мотора или по максимально-допустимому току диодов D1-D4.
    • Сами же понимаете, что так не может быть. Или нет "сквозняка", или схема неправильно собрана, элементы не те, битые и пр., и схема защиты не работает. Проверьте сначала работу защёлки защиты при питании от 15 В, отпаяв R19 и подавая туда медленно увеличивающееся напряжение до 1,5 - 2 В (можно с потенциометра ом на 100-500). Добейтесь, чтобы работала. Порог срабатывания измерьте. Пересчитайте в ток через резистор 0,1 Ом. Соответствует ли "правильному"? Проверьте, что у этого резистора сопротивление действительно 0,1 Ом. Запаяйте 0,1 Ом обратно. Напишите, какая лампочка. А то мало ли какая, может она не от "сквозняка", а от броска тока заряда С18 С16 мигает. Транзисторы ключей проверьте. Впаяйте вместо первичной трансформатора резистор ом 150 - 300, чтобы ток с ключей в этот "эквивалент трансформатора" не больше 50-100 мА был. Посмотрите форму напряжения на выходе ключей, в точке соединения С16 и С18, на питании после лампочки. Ищите, где ляп. Умозрительно подсказать можно только по каким-то измеренным данным. Кроме вас никто их не добудет. В общем, как в анекдоте: - Молодой человек, ну делайте же уже хоть что-нибудь!
    • Ну так можно увеличить глубину ООС, тем самым понизив чувствительность и повысив линейность
    • Судя по этой картинке   в трухе передней панели под выступающие болты и шишки паек ЗК динамиков выковыряныфрезерованы выемки, иначе бы динамики так плотно не прилегали бы к ДВП.    А оно тебе надо? "Работает - не мешай"(с)/это уже аксиома, не требующая доказательств/ , пытаясь сделать лучше, чем сделано на заводе. Сanton-ят, т.е. поют, и лучше, чем есть, тебе не сделать. Ну перенесёшь ты динамики наружу, а что тебе это даст? Кроме того, что при попытке их продать(а продавать их когда-нибудь придётся, т.к. эта акустика бюджетного сегмента без потуг на высший класс Hi-Fi) , тебе придётся объяснять потенциальному покупателю причину, по которой какой-то умник заколхозил такую переделку с акустикой, ты ничего хорошего не получишь. Задуманная тобой переделка - это по сути возня ради возни. 
    • Малыш, чушь пока здесь мелешь только ты. Сидел бы лучше в своей оффтопной теме, лепил бы на своём 3D-пинтере куколок, и не лез бы в те темы, в которых ты - ноль. 
    • Там нашел. Вроде купил.  Спасибо всем
×
×
  • Создать...