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

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

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

    • Тюльгин Ю.М. Радиоконструктор 2016-03 Датчик пересечения ИК-луча Другая сфера применения аналоговых усилителей на основе микросхемы 4069 - инфракрасный датчик или фотоприемник инфракрасного сигнала. На рисунке 7 показана схема успешно эксплуатируемого уже несколько лет датчика, реагирующего на пересечение либо отражение инфракрасного луча. Интересно то, что в схеме нет широко используемых в таких случаях готовых интегральных фотоприемников. Сигнал принимается обычным ИК-фотодиодом, а усиление производится усилительными каскадами, выполненными на основе инверторов микросхемы 4069. Наличие шести инверторов в одном корпусе микросхемы 4069 позволяет весь датчик, как его приемную, так и передающую части выполнить на одной микросхеме 4069. Рис. 7. Схема датчика пересечения ИК-луча на микросхеме 4069. И так, схема показана на рис. 7. Как обычно, ИК-датчик работающий на отражение или пересечение луча состоит из передатчика ИК-луча и его приемника. Передатчик ИК-луча состоит из ИК-светодиода HL1 (здесь светодиод, такой как в пультах ДУ аппаратуры), токового ключа на транзисторах VТ1 и VТ2 и генератора импульсов частотой около 8-10 kHz. Импульсы с выхода мультивибратора на элементах D1.5 и D1.6 поступают через токовый ключ на VT1 и VT2 на ИК-светодиод HL1. Резистор R11 ограничивает ток через светодиод. HL1 излучает ИК вспышки, следующие с частотой 8-10 kHz. Если существует видимость между HL1 и FH1, излученные вспышки воздействуют на фотодиод FH1 ив нем возникают импульсы тока. Благодаря резистору R1 они преобразуются в импульсы напряжения. Переменное напряжение через конденсатор С1 поступает на первый усилитель на элементе D1.1. Его в усилительный режим переводит резистор R2. Далее, через С2 усиленное переменное напряжение поступает на усилитель на D1.2. В цепи ООС D1.2 есть резистор R3, который смещает его вход в сторону напряжения логической единицы. В результате его выход смещен в сторону логического нуля. Поэтому, в отсутствие входного сигнала напряжение на С3 соответствует логическому нулю. Но при наличии входного сигнала за счет работы детектора на VD1 напряжение на С3 увеличивается до логической единицы. Выходные импульсы формирует триггер Шмитта на элементах D1.3 и D1.4. Фотодиод РН302 можно заменить любым ИК-фотодиодом. Налаживание датчика сводится к подбору сопротивления R3, чтобы при отсутствии сигнала на выходе D1.4 был ноль, а при наличии сигнала - единица. Везде вместо микросхемы 4069 можно попробовать микросхему К561ЛН2.
    • А программатора нет чтоб попробовать залить загрузчик?
    • Мда... Ардуино приехала нерабочая. К компу подключаю - звук подключения есть, а компом не определяется. Маркировка микросхемы загрузчика стёрта.... Ну китайцы... Теперь ждём новую Ардуино, а я пока начну делать пульт.
    • ИМХО, только с24, с25, с12 имеет смысл проверить/заменить.
    • Я сам найду, вы мне название напишите пожалуйста.
    • Добрый вечер..)) Нет в моем случае лучше найти готовый для моего Цифровой осциллограф Instrustar ISDS205A 2 канала х 20 МГц.. Что касается измерительной техники я пасс.. стараюсь купить уже готовое..))
×
×
  • Создать...