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

 
 
> парочка, дилетантстких вопросов
essev
сообщение Jan 11 2011, 03:16
Сообщение #1


Участник
*

Группа: Участник
Сообщений: 72
Регистрация: 16-05-07
Пользователь №: 27 757



Всем привет.
У меня есть парочка дилетантских вопросов:

1) на выходном порте стоит Д-триггер.
Нужно чтобы при включении питания он был = '1'. Как это можно сделать?
У меня нет внешнего ресета. И даже вполне возможно, что схема некоторое время вообще без синхронизации находится.
Но надо чтобы выходной триггер порта при включении питания вставал в '1'.


Как я понимаю приведенный ниже пример описания триггера инициализирует его '1' только при моделировании?


entity dff is


port (rest,clk,d,en: in std_logic;
q: out std_logic := '1';

);

end dff;

architecture behav of dff is

begin

if (reset = '1') then
q <= '0';

elsif (rising_edge(clk)) then

if (en='1') then

q<= d;

end if;


end if;
end process;

end behav;



2) Приведенный выше код Precision Synthesys синтезирует как Д-триггер с en клока равным всегда '1', а также синтезирует мультиплексор. Почему так?


Спасибо



Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
essev
сообщение Jan 11 2011, 07:37
Сообщение #2


Участник
*

Группа: Участник
Сообщений: 72
Регистрация: 16-05-07
Пользователь №: 27 757



ПЛИСина = ЦПЛД МАХ2

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

Вот выдержка из даташита на МАХ2

By default, all registers in MAX II devices are set to power-up low. However, this
power-up state can be set to high on individual registers during design entry using
the Quartus II software.

Получается каждому конкретному триггеру можно назначить свое значение при включении. Я так понимаю это в hdl коде можно делать? Или я не прав? Но вот синтезатор не воспринимает инициализацию триггера.


LIBRARY ieee;
USE ieee.std_logic_1164.all;
USE ieee.std_logic_arith.all;

ENTITY dff_new IS
PORT(
D : IN std_logic;
clk : IN std_logic;
en : IN std_logic;
reset : IN std_logic;
Q : OUT std_logic := '1'
);
END dff_new ;


LIBRARY ieee;
USE ieee.std_logic_1164.all;
USE ieee.std_logic_arith.all;


ARCHITECTURE struct OF dff_new IS
BEGIN
process(reset,clk)
begin
if (reset = '1') then
Q <= '0';
elsif (rising_edge(clk)) then
if (en = '1') then
Q <= D;
end if;
end if;
end process;
END struct;

Цитата(DmitryR @ Jan 11 2011, 09:39) *
Нет, в FPGA это может работать, потому что триггеры в FPGA могут быть инициализированы прошивкой.


Потому что триггер с enable устроен именно так, а вынос мультиплексора наружу теоретически может повлечь объединение его с предыдущим уровнем логики. Однако, это все интересно только для ASIC, и почему он так делает для FPGA - сказать затруднительно.



Так,а почему вход CE просто к '1' подтянут. Почему синтезатор его не пользует или рисует почему зря sm.gif

Сообщение отредактировал essev - Jan 11 2011, 07:35
Go to the top of the page
 
+Quote Post



Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 28th July 2025 - 10:27
Рейтинг@Mail.ru


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