реклама на сайте
подробности

 
 
6 страниц V  < 1 2 3 4 5 > »   
Reply to this topicStart new topic
> Не работает схема верхнего уровня, Помощь в освоении VHDL
призрак
сообщение May 11 2018, 08:03
Сообщение #31


Местный
***

Группа: Свой
Сообщений: 216
Регистрация: 12-12-06
Из: Москва
Пользователь №: 23 439



Спасибо за помощь, воспользуюсь обязательно всеми советами, но сейчас хочется разобраться почему мой код не работает и как его запустить, чтобы понять где ошибка.
Go to the top of the page
 
+Quote Post
Flip-fl0p
сообщение May 11 2018, 08:10
Сообщение #32


В поисках себя...
****

Группа: Свой
Сообщений: 698
Регистрация: 11-06-13
Из: Санкт-Петербург
Пользователь №: 77 140



Цитата(призрак @ May 11 2018, 11:03) *
Спасибо за помощь, воспользуюсь обязательно всеми советами, но сейчас хочется разобраться почему мой код не работает и как его запустить, чтобы понять где ошибка.

А скиньте код в виде текста )
Go to the top of the page
 
+Quote Post
призрак
сообщение May 11 2018, 09:18
Сообщение #33


Местный
***

Группа: Свой
Сообщений: 216
Регистрация: 12-12-06
Из: Москва
Пользователь №: 23 439



Код
library IEEE;
use IEEE.std_logic_1164.all;
use IEEE.std_logic_arith.all;
use IEEE.std_logic_signed.all;
use IEEE.std_logic_unsigned.all;

entity \3REG\ is
  port(
       CLKT : in STD_LOGIC;
       RS : in STD_LOGIC;
       RST : in STD_LOGIC;
       Q : out STD_LOGIC_VECTOR(0 to 3):= (others => '0')
  );
end \3REG\;

architecture \3REG\ of \3REG\ is

component \4DFF\
  port (
       CLK : in STD_LOGIC;
       D0,D1,D2,D3 : in STD_LOGIC;
       RS0,RS1,RS2,RS3 : in STD_LOGIC;
       Q0,Q1,Q2,Q3 : out STD_LOGIC
       );
end component;

signal D0 : STD_LOGIC;
signal QT0,QT1,QT2,QT3 : STD_LOGIC := '0';

begin
        
U10 : \4DFF\
  port map(
       CLK => CLKT,
       D0 => D0,
       D1 => QT0,
       D2 => QT1,
       D3 => QT2,
       Q0 => QT0,
       Q1 => QT1,
       Q2 => QT2,
       Q3 => QT3,
       RS0 => RST,
       RS1 => RST,
       RS2 => RST,
       RS3 => RST
  );

Q(3) <= QT3;
Q(2) <= QT2;
Q(1) <= QT1;
Q(0) <= QT0;
D0 <= RS or QT3;

    
end \3REG\;


и исправленный тригер
Код
library IEEE;
use IEEE.STD_LOGIC_1164.all;

entity \4DFF\ is
     port(
         D0,D1,D2,D3 : in STD_LOGIC;
         CLK : in STD_LOGIC;
         RS0,RS1,RS2,RS3 : in STD_LOGIC;
         Q0,Q1,Q2,Q3 : out STD_LOGIC := '0'
           );
end \4DFF\;

architecture \4DFF\ of \4DFF\ is
begin
    
process( CLK,RS0,RS1,RS2,RS3 )
   begin  
             
     if ( RS0='1') then    Q0 <= '0';
     elsif ( rising_edge (CLK)) then Q0 <= D0;
     end if;    
    
     if ( RS1='1') then    Q1 <= '0';
     elsif ( rising_edge (CLK)) then Q1 <= D1;
     end if;    
      
     if ( RS2='1') then    Q2 <= '0';
     elsif ( rising_edge (CLK)) then Q2 <= D2;
     end if;    
    
     if ( RS3='1') then    Q3 <= '0';
     elsif ( rising_edge (CLK) ) then Q3 <= D3;
     end if;    
    end process;    
    
end \4DFF\;
Go to the top of the page
 
+Quote Post
Flip-fl0p
сообщение May 11 2018, 09:39
Сообщение #34


В поисках себя...
****

Группа: Свой
Сообщений: 698
Регистрация: 11-06-13
Из: Санкт-Петербург
Пользователь №: 77 140



Запустил на Modelsim
1. Пока не убрал слеши из названия модулей не работало.
Теперь файлы регистра выглядит так:
CODE
library ieee;
use ieee.std_logic_1164.all;

entity DFF_aclr is
port
(
D0,D1,D2,D3 : in STD_LOGIC;
CLK : in STD_LOGIC;
RS0,RS1,RS2,RS3 : in STD_LOGIC;
Q0,Q1,Q2,Q3 : out STD_LOGIC := '0'
);
end DFF_aclr;

architecture DFF_aclr of DFF_aclr is
begin

process
(
CLK,
RS0,
RS1,
RS2,
RS3
)
begin
if (RS0='1') then
Q0 <= '0';
elsif (rising_edge (CLK)) then
Q0 <= D0;
end if;

if (RS1='1') then
Q1 <= '0';
elsif (rising_edge (CLK)) then
Q1 <= D1;
end if;

if (RS2='1') then
Q2 <= '0';
elsif (rising_edge (CLK)) then
Q2 <= D2;
end if;

if (RS3='1') then
Q3 <= '0';
elsif (rising_edge (CLK)) then
Q3 <= D3;
end if;
end process;
end DFF_aclr;


2. Убрал ненужные библиотеки. Зачем Вы их подключали я не знаю. Но в принципе они не влияли никак.
CODE
library IEEE;
use IEEE.std_logic_1164.all;
entity reg_aclr is
port(
CLKT : in STD_LOGIC;
RS : in STD_LOGIC;
RST : in STD_LOGIC;
Q : out STD_LOGIC_VECTOR(0 to 3):= (others => '0')
);
end reg_aclr;

architecture reg_aclr of reg_aclr is

component DFF_aclr
port (
CLK : in STD_LOGIC;
D0,D1,D2,D3 : in STD_LOGIC;
RS0,RS1,RS2,RS3 : in STD_LOGIC;
Q0,Q1,Q2,Q3 : out STD_LOGIC
);
end component;

signal D0 : STD_LOGIC;
signal QT0,QT1,QT2,QT3 : STD_LOGIC := '0';

begin

U10 : DFF_aclr
port map(
CLK => CLKT,
D0 => D0,
D1 => QT0,
D2 => QT1,
D3 => QT2,
Q0 => QT0,
Q1 => QT1,
Q2 => QT2,
Q3 => QT3,
RS0 => RST,
RS1 => RST,
RS2 => RST,
RS3 => RST
);

Q(3) <= QT3;
Q(2) <= QT2;
Q(1) <= QT1;
Q(0) <= QT0;
D0 <= RS or QT3;
end reg_aclr;


С таким тестбенчем все работает как и должно:

CODE
LIBRARY ieee;
USE ieee.std_logic_1164.all;

ENTITY reg_aclr_vhd_tst IS
END reg_aclr_vhd_tst;
ARCHITECTURE reg_aclr_arch OF reg_aclr_vhd_tst IS
-- constants
-- signals
SIGNAL CLKT : STD_LOGIC;
SIGNAL Q : STD_LOGIC_VECTOR(0 TO 3);
SIGNAL RS : STD_LOGIC := '0';
SIGNAL RST : STD_LOGIC := '0';
COMPONENT reg_aclr
PORT (
CLKT : IN STD_LOGIC;
Q : OUT STD_LOGIC_VECTOR(0 TO 3);
RS : IN STD_LOGIC;
RST : IN STD_LOGIC
);
END COMPONENT;
--▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓
--========================================================================
-- Формирование констант для вычисления периодв CLK от частоты работы
--========================================================================
constant clk_freq : real := 100.0; -- MHz
constant clk_prd : time := (1000.0/clk_freq) * 1.0 ns; -- Вычисление периода CLK
BEGIN
i1 : reg_aclr
PORT MAP (
-- list connections between master ports and signals
CLKT => CLKT,
Q => Q,
RS => RS,
RST => RST
);
--==========================================
-- Задание тактовой частоты проекта
--==========================================
process
begin
CLKT <= '0'; wait for clk_prd/2;
CLKT <= '1'; wait for clk_prd/2;
end process;

process
begin
wait for 15*clk_prd;
RS <= '1';
wait for clk_prd;
RS <= '0';
wait;
end process;

process
begin
wait for 50*clk_prd;

RST <= '1';
wait for 3*clk_prd;
RST <= '0';
wait;
end process;

END reg_aclr_arch;

Вывод : я предполагаю, что некорректные имена вида \name\
Go to the top of the page
 
+Quote Post
KalashKS
сообщение May 11 2018, 09:39
Сообщение #35


Местный
***

Группа: Участник
Сообщений: 236
Регистрация: 7-02-11
Пользователь №: 62 755



А в чем проблема теперь? Подайте сброс, подайте ваш RS меньше чем на такт, на такт, два, четыре. Посмотрите, как именно у вас не работает. Подскажу, если подадите на один такт, работать будет, но, скорее всего, только один раз. А потом послушайте совета, сбрасывайте один из тригеров в '1' и используйте для перезапуска сигнал RST.
Go to the top of the page
 
+Quote Post
andrew_b
сообщение May 11 2018, 09:45
Сообщение #36


Профессионал
*****

Группа: Свой
Сообщений: 1 959
Регистрация: 30-12-04
Из: Воронеж
Пользователь №: 1 757



Цитата(призрак @ May 11 2018, 12:18) *
use IEEE.std_logic_arith.all;
use IEEE.std_logic_signed.all;
use IEEE.std_logic_unsigned.all;

Во-первых, эти библиотеки вам не нужны, если вы не используете математические функции.
В-вторых, использование std_logic_signed и std_logic_unsigned в одном модуле несколько странно.
В-третьих, не используйте их вообще. Используйте стандартную библиотеку numeric_std

Цитата(Flip-fl0p @ May 11 2018, 12:39) *
Пока не убрал слеши из названия модулей не работало.
Там имя архитектуры совпадает с именем модуля. Почему-то.
Go to the top of the page
 
+Quote Post
Flip-fl0p
сообщение May 11 2018, 09:56
Сообщение #37


В поисках себя...
****

Группа: Свой
Сообщений: 698
Регистрация: 11-06-13
Из: Санкт-Петербург
Пользователь №: 77 140



Цитата(andrew_b @ May 11 2018, 12:45) *

А я даже и не заметил rolleyes.gif . Во всяком случае ни Quartus ни Modelsim не ругались на это. Да и навскидку не помню, чтобы так нельзя было делать. Хотя я даже не думаю про это. Ибо у меня они всегда называются одинаково: либо RTL либо Behavoral
Go to the top of the page
 
+Quote Post
KalashKS
сообщение May 11 2018, 10:03
Сообщение #38


Местный
***

Группа: Участник
Сообщений: 236
Регистрация: 7-02-11
Пользователь №: 62 755



Цитата(andrew_b @ May 11 2018, 12:45) *
Там имя архитектуры совпадает с именем модуля. Почему-то.

Я практически всегда так пишу, еще никто не ругался sm.gif.
Go to the top of the page
 
+Quote Post
andrew_b
сообщение May 11 2018, 10:14
Сообщение #39


Профессионал
*****

Группа: Свой
Сообщений: 1 959
Регистрация: 30-12-04
Из: Воронеж
Пользователь №: 1 757



Всю жизнь думал, что имена entity и связанного с ним архитектурного тела должны быть разными.
Ну и ладно.
Go to the top of the page
 
+Quote Post
призрак
сообщение May 11 2018, 10:23
Сообщение #40


Местный
***

Группа: Свой
Сообщений: 216
Регистрация: 12-12-06
Из: Москва
Пользователь №: 23 439



Цитата(Flip-fl0p @ May 11 2018, 12:39) *
Вывод : я предполагаю, что некорректные имена вида \name\


Убрал слэши и стало ещё хуже, их то генерила сама прога, поэтому когда я их убрал - вся структура проекта рухнула
Go to the top of the page
 
+Quote Post
Flip-fl0p
сообщение May 11 2018, 10:30
Сообщение #41


В поисках себя...
****

Группа: Свой
Сообщений: 698
Регистрация: 11-06-13
Из: Санкт-Петербург
Пользователь №: 77 140



Цитата(призрак @ May 11 2018, 13:23) *
Убрал слэши и стало ещё хуже, их то генерила сама прога, поэтому когда я их убрал - вся структура проекта рухнула

Значит симулятор кривой, либо настройки где-то не те. Код работает правильно. Modelsim я доверяю больше чем ActiveHDL. То что я скинул работает.
Go to the top of the page
 
+Quote Post
KalashKS
сообщение May 11 2018, 10:35
Сообщение #42


Местный
***

Группа: Участник
Сообщений: 236
Регистрация: 7-02-11
Пользователь №: 62 755



У вас же раньше все моделировалось. Иксы были, почти там, где надо. Там, где не надо, вероятно, вызывались рукописной задержкой присвоения на 1 ns. Покажите, что получается сейчас.
Go to the top of the page
 
+Quote Post
andrew_b
сообщение May 11 2018, 10:40
Сообщение #43


Профессионал
*****

Группа: Свой
Сообщений: 1 959
Регистрация: 30-12-04
Из: Воронеж
Пользователь №: 1 757



С именами \name\ всё нормально. Это расширенные идентификаторы, появившиеся в VHDL'93.
Go to the top of the page
 
+Quote Post
Flip-fl0p
сообщение May 11 2018, 10:49
Сообщение #44


В поисках себя...
****

Группа: Свой
Сообщений: 698
Регистрация: 11-06-13
Из: Санкт-Петербург
Пользователь №: 77 140



Цитата(andrew_b @ May 11 2018, 13:40) *
С именами \name\ всё нормально. Это расширенные идентификаторы, появившиеся в VHDL'93.

А вот Modelsim ALTERA STARTER EDITION 10.1d не нравится. Сейчас специально проверил.
Пишет что :
Цитата
Component instance "U10 : DFF_aclr" is not bound.
Go to the top of the page
 
+Quote Post
призрак
сообщение May 11 2018, 12:09
Сообщение #45


Местный
***

Группа: Свой
Сообщений: 216
Регистрация: 12-12-06
Из: Москва
Пользователь №: 23 439



Переписал проект
Код
library IEEE;
use IEEE.STD_LOGIC_1164.all;

entity REG30 is
     port(
         CLKR : in STD_LOGIC;
         RS0 : in STD_LOGIC;
         RST : in STD_LOGIC;
         Q : out STD_LOGIC_VECTOR(0 to 3) := (others => '0')
         );
end REG30;

architecture RTL of REG30 is
component DFF4
  port (
       CLK : in STD_LOGIC;
       D0,D1,D2,D3 : in STD_LOGIC;
       RS0,RS1,RS2,RS3 : in STD_LOGIC;
       Q0,Q1,Q2,Q3 : out STD_LOGIC
       );
end component;

signal D0 : STD_LOGIC;
signal QT0,QT1,QT2,QT3 : STD_LOGIC := '0';

begin

U1 : DFF4
  port map(
       CLK => CLKR,
       D0 => D0,
       D1 => QT0,
       D2 => QT1,
       D3 => QT2,
       Q0 => QT0,
       Q1 => QT1,
       Q2 => QT2,
       Q3 => QT3,
       RS0 => RS0,
       RS1 => RS0,
       RS2 => RS0,
       RS3 => RS0
  );

    Q(3) <= QT3;
    Q(2) <= QT2;
    Q(1) <= QT1;
    Q(0) <= QT0;
    D0 <= RST or QT3;

end architecture;

Тестбенч генерил методами синтезатора, не знаю как текст такой ввести, вот результат - тот же самый, тригеры не переключаются.

На совпадение имён не обращайте внимания, заметил, поправил, ничего не изменилось
Go to the top of the page
 
+Quote Post

6 страниц V  < 1 2 3 4 5 > » 
Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 20th August 2018 - 12:18
Рейтинг@Mail.ru


Страница сгенерированна за 0.01099 секунд с 7
ELECTRONIX ©2004-2016