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

port map как сделать в case

Не хочется перечислять все подряд

when "0000001"=> x<=a;

when "0000010"=> x<=a;

....

у вас нет выбора, это VHDL. переходите на верилог/систем верилог.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

понятно.

Еще вопрос как во что синтезируется этот код

tempdataadc1(0)<=datain_adc1 after 500 ns;

Интересует after 500 ns; как синтезатор узнает какой клок, не где не задавал?

И что он сделает одновибратор ?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

понятно.

Еще вопрос как во что синтезируется этот код

tempdataadc1(0)<=datain_adc1 after 500 ns;

Интересует after 500 ns; как синтезатор узнает какой клок, не где не задавал?

И что он сделает одновибратор ?

Синтезатор для FPGA не сделает одновибратор, ввиду их отсутствия в железе. Вообще задержки не следует указывать в синтезируемом коде.

Сдвиговый регистр можно описывать так:

tempdataadc1 <= tempdataadc1(tempdataadc1'high-1 downto 0) & datain_adc1;

Для описания множественного выбора в VHDL есть оператор "|", причём компилятор Вам про него даже напомнил:). Поставьте Aldec HDL, в справке там полно примеров.

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

tempdataadc1 <= tempdataadc1(tempdataadc1'high-1 downto 0) & datain_adc1;

Понятно .

tempdataadc1 <= tempdataadc1(tempdataadc1'high-1 downto 0) & datain_adc1;

tempdataadc1 это векторный тип,

а datain_adc1 stdlogic

Сдвиг на сколько в этом коде будет , так понимаю здесь все время будет "И" с 0 битом tempdataadc1 ?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Не хочется перечислять все подряд

when "0000001"=> x<=a;

when "0000010"=> x<=a;

....

 

Тоже ошибка пробовал

Error (10500): VHDL syntax error at proba.vhd(118) near text "B"0000010""; expecting "!", or "=>"

 

Это не "!", а "|" (pipe, вертикальная черта, etc).

when "0000001" | "0000010"=> x<=a;

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Это не "!", а "|" (pipe, вертикальная черта, etc).

Спасибо. сейчас попробую.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

tempdataadc1 <= tempdataadc1(tempdataadc1'high-1 downto 0) & datain_adc1;

tempdataadc1 это векторный тип,

а datain_adc1 stdlogic

Сдвиг на сколько в этом коде будет , так понимаю здесь все время будет "И" с 0 битом tempdataadc1 ?

& - это конкатенация, в данном случае бита с вектором. Я отрезаю от вектора старший бит, и присоединяю новый бит с младщей стороны вектора, средние биты при этом сдвигаются на 1, больше ничего писать не нужно.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

спасибо, понял, думал код как в си работает.

 

На время изучения HDL, ИМХО, надо бы подзабыть про языки программирования, да вспомнить цифровую схемотехнику.

Изучать VHDL я начинал с Бибило Основы языка VHDL.

 

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

В чем будет разница между entity work и component adc , какой вариант где обычно используется?

 

DD3: entity work.adc(adc_conv)port map(
data1,data2);

и

component adc
    port(
         data1 : in std_logic_vector ( 11 downto ),   
        data2 : out std_logic_vector ( 11 downto ),);
  end component;
begin 
dd3:adc
port map....

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Ни в чём. Первый вариант называется direct instantiation и появился в VHDL'93. Я пользуюсь им, чтобы не писать декларации компонентов.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

у вас нет выбора, это VHDL. переходите на верилог/систем верилог.

выбор есть :)

 

пример

when others=>op<=inp(7);

 

в этой строке мы определяем все остальные состояния, которые не хотим перечислять

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

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

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...