zotowa
Apr 29 2007, 20:56
Злравствуйте. Проблема такая: имеется схема, я делаю описание структурного, регистрового и поведеньческого тела на языке VHDL. Моделирую в среде - ModelSim 6.0a. Потом пишу тест (чтобы правильность функционирования проверить). Далее делаю симуляцию и смотрю сигналы в окне wave. При этом все входные сигналы отображаются правильно. А вот все выходные нулевые! Возможно это известная проблема, и вы занете ее решение. Для конкретности, если понадобиться, могу привести пример своего кода.
Всем спасибо.
CaPpuCcino
Apr 29 2007, 22:03
ну так вешайте скорее код
zotowa
Apr 29 2007, 22:14
вот описание структурного тела:
port(s, c, r: in bit; d: in bit_vector (1 to 4); q1, q2, q3, q4: out bit);
end RG4test;
architecture STR of RG4test is
component nand2 port(x1, x2: in bit; y: out bit);
end component nand2;
component inv port(x: in bit; y: out bit);
end component inv;
component sdcrtt port(s, d, c, r: in bit; q: out bit);
end component sdcrtt;
signal nc, s1, s2, r1, nr1, nS2: bit;
begin
d1: inv port map (c, nc);
d2: nand2 port map(s, r, s1);
d3: nand2 port map(s, s1, s2);
d4: nand2 port map(s1, r, r1);
d5: inv port map (s2, nS2);
d6: inv port map (r1, nR1);
d7: sdcrtt port map (ns2, d(1), nc, nr1, q1);
d8: sdcrtt port map (ns2, d(2), nc, nr1, q2);
d9: sdcrtt port map (ns2, d(3), nc, nr1, q3);
d10: sdcrtt port map (ns2, d(4), nc, nr1, q4);
end STR;
вот тест к нему:
entity test_RG4 is
end test_RG4;
architecture test_RG4 of test_RG4 is
component test_rg4_str is
port(s, c, r: in bit; d: in bit_vector (1 to 4);
q1, q2, q3, q4: out bit);
end component;
signal s, c, r: bit;
signal d: bit_vector(1 to 4);
signal q1_str, q2_str, q3_str, q4_str: bit;
begin
dstr: test_rg4_str port map(s, c, r, d, q1_str, q2_str, q3_str, q4_str);
p1: process
begin
s <= '0' after 0 ns, '1' after 100 ns,
'0' after 200 ns, '1' after 300 ns,
'0' after 400 ns, '1' after 500 ns,
'0' after 700 ns;
r <= '0' after 0 ns, '1' after 100 ns,
'0' after 200 ns, '1' after 300 ns,
'0' after 400 ns, '1' after 500 ns,
'0' after 600 ns, '1' after 700 ns;
c <= '0' after 0 ns, '1' after 400 ns,
'0' after 600 ns;
d(1) <= '1' after 0 ns, '0' after 100 ns;
d(2) <= '1' after 0 ns, '0' after 100 ns;
d(3) <= '1' after 0 ns, '0' after 100 ns;
d(4) <= '1' after 0 ns, '0' after 100 ns;
wait for 800 ns;
end process;
end test_RG4;
таблица истиности элемнта такая:
s r c q1 q2 q3 q4
s=r s=r / d1 d2 d3 d4
s=r s=r 0,1,\ q1 q2 q3 q4
1 0 x 1 1 1 1
0 1 x 0 0 0 0
то есть, мне кажеться я правильно форимирую входные сигналы, для того чтобы получить на выходе нечто отличное от нуля. Или это не так?
CaPpuCcino
Apr 29 2007, 22:29
ой-ё! бедные дети! дайте лучше поведеньческое описание сxемы - а то на эту жуть смотреть невозможно/совершенно неохота рисовать вентили чтобы понять что же она(сxемы) у вас делает/ (и подключаемые библиотеки из кода не выкидывайте плииз. да и еще - пользуйтесь дескрипторами [cоde]ваш код[/cоde] - чтобы табуляция сохранялась)
zotowa
Apr 29 2007, 23:18

вот оно:
entity RG4test is
port(s, c, r: in bit; d: in bit_vector (1 to 4); q1, q2, q3, q4: out bit);
end RG4test;
architecture POV of RG4test is
begin
process(s, r, c, d(1), d(2), d(3), d(4))
begin
if(s = '1') and(r = '0') then q1<='1'; q2<='1';q3<='1';q4<='1';
elsif (s = '0') and(r = '1') then q1<='0';q2<='0';q3<='0';q4<='0';
end if;
if((s = '0') and(r = '0') and (c = '0') and not(c'stable)) then q1<=d(1); q2<=d(2);q3<=d(3);q4<=d(4);
end if;
end process;
end POV;
Еще я не подключаю никаких библиотек (ну во -первых компилирпуется и без них... ). Но при попытке включить в код такую строку - library lib; use lib.all; возникает ошибка - Failed to access library 'lib' at "lib". Попыталась прилинковать библиотеки (Compile->Link) тоже возникает ошибка - No moduleinfo.sc files were found in the visible design libraries.
таблица истиности:
Код
s r c q1 q2 q3 q4
s=r s=r / d1 d2 d3 d4
s=r s=r 0,1,\ q1 q2 q3 q4
1 0 x 1 1 1 1
0 1 x 0 0 0 0
Спасибо
CaPpuCcino
Apr 29 2007, 23:38
Цитата(zotowa @ Apr 30 2007, 00:18)

таблица истиности:
Код
s r c q1 q2 q3 q4
s=r s=r / d1 d2 d3 d4
s=r s=r 0,1,\ q1 q2 q3 q4
1 0 x 1 1 1 1
0 1 x 0 0 0 0
может кто-нибудь заодно расскажет что вот это значит

?
c / - это стабильный тактирующий сигнал или его передний фронт?
,a
c 0,1,\ - это, блин что? переход из нуля в еденицу или просто любая смена сигнала(любой фронт)?
итого, товарищ студентка, что в конечном итоге сxема-то должна делать (словами)? а то ваших преподавателей так много(и у каждого своя нотация) - а нас так мало