Jump to content
X-Ray

Vhdl

Recommended Posts

Необходимо на 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;

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

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

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

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

Share this post


Link to post
Share on other sites

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

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;

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

Share this post


Link to post
Share on other sites

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

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

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

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

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

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

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

Edited by X-Ray

Share this post


Link to post
Share on other sites

Литиевые батарейки Fanso для систем телеметрии и дистанционного контроля

Системы телеметрии находят все более широкое применение во многих отраслях на промышленных и коммунальных объектах. Требования, предъявляемые к условиям эксплуатации приборов телеметрии и, как следствие, источников питания для них, могут быть довольно жесткими. Fanso предоставляет широкую линейку продукции, рассчитанной на различные условия эксплуатации, что позволяет подобрать батарейку для каждого конкретного применения, в том числе и для устройств телеметрии.

Подробнее

нет завязки на входы 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);
......
......

Share this post


Link to post
Share on other sites

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

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

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

Share this post


Link to post
Share on other sites
                     

Приглашаем на вебинар Решения для построения ультразвуковых счетчиков жидкостей и газов на базе MSP430

Компэл совместно с Texas Instruments 23 октября 2019 приглашают на вебинар, посвященный системам-на-кристалле для построения ультразвуковых расходомеров жидкостей и газов на базе ядра MSP430. Вебинар проводит Йоханн Ципперер – эксперт по ультразвуковым технологиям, непосредственно участвовавший в создании данного решения. На вебинаре компания Texas Instruments представит однокристальное решение, позволяющее создавать точные недорогие счетчики жидкостей и газов.

Подробнее...

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

Project.txt

tect bench.txt

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

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Reply to this topic...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...

×
×
  • Create New...