Jump to content
    

Новый стандарт VHDL-2007(?)

пример Verilog

 

  always @(posedge clk, posedge reset) begin
    
    if (reset) begin 
      popaa <= 1'b0; 
      end 
    else begin
      popaa <= ina;
    end 
    
    popab <= ina;
  end

 

Квартус 6.1 : первое синтезируеться в тригер со сбросом + тригер без сброса, второе

в тригер со сбросом + тригер с комб логикой.

И какая же логика там получается?

Share this post


Link to post
Share on other sites

ЭЭЭЭ !!! да систем верилога я еще не дошел :)

 

Медленно (страниц по 20 в день) курю LRM IEEE Standard Verilog® Hardware Description Language IEEE Std 1364-2001 (Revision of IEEE Std 1364-1995)

эва! так курите же его скорее совместно с IEEE 1364-2005(1800) (extension of IEEE 1364 Verilog ...) чтоб ложных представлений о языке не было - а то ведь 21ый век на дворе (а вы всё за папиросы) и любители ВХДЛ всё тыкают в недостатки сандартов прошлого века, а то что Верилог уже 2 года как объектно-ориентированным стал замечать просто отказываются. неприятно однако

 

5. отсутствие избирательного синтезируемого событийного контроля в блоках (все завязано на списки чувствительности).

а это сделано на мой взгляд по принципу "ибо нехрен" и на мой взгляд является приемуществом - ибо нехрен мешать в одном блоке(функционально\логически группировать) логику синхронно-асинхронную с синхронно-синхронную (где первое - тактовый_сигнал, второе - сброс)

у меня вот, например, даже без прочтения "Верилог РТЛ кодинг стайл" желание так замешивать никогда не возникало - ибо чревато возможными ошибками (почему ВХДЛ-ребята обоими руками за строгую типизацию, но против строгой организации по признаку синхронизации, но при этом никто не против того чтобы при синтезе отказаться от присваивания одному сигналу значений в разных процессах - хотя ведь тоже если подумать - сплошное нарушение прав человека налицо ;) )

Share this post


Link to post
Share on other sites

(почему ВХДЛ-ребята обоими руками за строгую типизацию, но против строгой организации по признаку синхронизации

//////////////////////////////////////

А об этом никто не говорил. Во всяком случае пример, приведенный выше на VHDL тоже некорректен.

(Порождает тригер со входом enable).

Share this post


Link to post
Share on other sites

приведенный выше на VHDL тоже некорректен.

(Порождает тригер со входом enable).

вот в том-то и дело что такой стиль описания может приводить к неоднозначности разбора при синтезе, хотя если разбить(сгруппировать синхронный и асинхронный сброс) на несколько процессов всё будет исключительно линейно и однозначно

Share this post


Link to post
Share on other sites

(почему ВХДЛ-ребята обоими руками за строгую типизацию, но против строгой организации по признаку синхронизации

//////////////////////////////////////

А об этом никто не говорил. Во всяком случае пример, приведенный выше на VHDL тоже некорректен.

(Порождает тригер со входом enable).

 

покажите мне пожалуйста где вы видите сигнал enable ? (файл vhdl.jpg )

 

насчет строгой синхронизации, дык куда уж строже. Что по сути описывает список чувствительности ?

он описывает сигналы, изменения который запускают процесс который спит на неявном wait стоящем в самой последней строке раздела исполнения (VHDL).

 

А дальше уж, какие фронты и какие сигналы я буду обрабатывать сугубо мое личное желание. Даже если я в одном процессе смешаю описание логики работающей на разных фронтах (файл vhdl2.jpg)

 

Главное что бы не было неопределености в описании конкретного сигнала. В частности в первом примере для сигнала q[1] явно описано что с ним происходит. без какой либо неопределенности.

 

в verilog это навязываеться явно и определяеться только списком чувствительности.

 

а это сделано на мой взгляд по принципу "ибо нехрен" и на мой взгляд является приемуществом - ибо нехрен мешать в одном блоке(функционально\логически группировать) логику синхронно-асинхронную с синхронно-синхронную (где первое - тактовый_сигнал, второе - сброс)

 

посмотрите vhdl3.jpg, кстати можно было вообще в список чувствительности добавить все сигналы, и результат синтеза был бы тот же самый!!!

 

Принципы обсуждать смысла не вижу.

Могу сказатьчто в последнее время на VHDL я не разделяю одну функциональность (например счетчик, регистровые лог. условия с его содержимым и регистровые сигналы управления) на несколько процесов, ИМХО это размывает внимание.

 

Есть в этом и дополнительные преимущества : производительность симулятора ~ кол-ву процессов + можно меньше писать, а результаты синтеза те же. Проверено на квартусе 6.1 в присутствии вас и на симплифае 8.6.1 лично.

 

Еще раз: не хочу обидеть/исковеркать verilog, просто по моему скромному мнению такой детерменизм со списками чувстительности не совсем удобен, кто то считает наоборот и это здорово.

 

эва! так курите же его скорее совместно с IEEE 1364-2005(1800) (extension of IEEE 1364 Verilog ...) чтоб ложных представлений о языке не было - а то ведь 21ый век на дворе (а вы всё за папиросы) и любители ВХДЛ всё тыкают в недостатки сандартов прошлого века, а то что Верилог уже 2 года как объектно-ориентированным стал замечать просто отказываются. неприятно однако

 

Ну насколько я понимаю 2001 год, в котором был принят стандарт это тоже 21 век, не так ли ? :))

 

говорю же впереди вечность (вапа рита караньи мудра (с) из хатха-йоги, вроде так пишеться, в этом нам поможет), куда торопиться и самое главное зачем.

 

Ну будет уходить на изучение стандарта 2-3месяца, зато будет время все обдумать, попробывать и потестить.

 

я не ругаю не VHDL, не Verilog, никому не навязываю свое мнение, я его всего лишь оглашаю в нашем диалоге.

 

В принципе можно было бы на тему языков (правда через полгода где то, еще PSL в моих планах)

и цикл статей написать вроде от VHDL'87 к SV и VHDL2007, но думаю что каждый должен пройдти этот путь сам. :beer:

 

 

 

 

ЗЗЫ. забыл сразу указать:

 

а что вы понимаете под

объектно-ориентированным
языком ?

 

аналоги классов, объединений можно было делать и на обычном Verilog 2001, подозреваю что и на Verilog 95 тоже. есть даже книга, в которой часть глав посвещена этому. (название не помню :()

 

С динамическими массивами, не получиться, труба. (хотя может быть PLI поможет, но это этой главы я еще не дошел :)) )

post-3453-1182998603_thumb.jpg

post-3453-1182998867_thumb.jpg

post-3453-1182999422_thumb.jpg

Share this post


Link to post
Share on other sites

Вход enable на регистре popab я увидел в 7.1 квартусе в RTL. reset на enable. мне этого не надо.

Да и подход у меня другой. Мне не трудно в два процесса все озвучить. Зато везде будет одинаково реализовываться.

 

LIBRARY ieee;

USE ieee.std_logic_1164.all;

USE ieee.std_logic_unsigned.all;

 

ENTITY vhd IS PORT(

clk : IN std_logic;

reset : IN std_logic;

ina : IN std_logic;

a : OUT std_logic;

b : OUT std_logic);

END vhd;

 

 

ARCHITECTURE vhdd OF vhd IS

signal popaa : std_logic;

signal popab : std_logic;

 

BEGIN

pipa_proc : process (

clk,

reset

) is

begin

if (reset = '1') then

popaa <= '0';

else if (rising_edge (clk)) then

popaa <= ina;

end if;

 

if (rising_edge (clk)) then

popab <= ina;

end if;

end if;

end process pipa_proc;

 

a <= popaa;

b <= popab;

 

END vhdd;

 

 

 

 

Да сейчас заметил, что у меня "" лишний" if. Так сказать импровизация.

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

Share this post


Link to post
Share on other sites

насчет строгой синхронизации, дык куда уж строже. Что по сути описывает список чувствительности ?

он описывает сигналы, изменения который запускают процесс который спит на неявном wait стоящем в самой последней строке раздела исполнения (VHDL).

так ить это страведливо для исполняемой модели (симуляция), и на это можно глядель и с другой стороны - что-то типа: список чувствительности это список сигналов управления поименнованных схемных элементов(сигналов для ВХДЛ /переменные ввиду не имеются потому как они переменные - вспомогат. элеметны/). получается что в блоке (процесса) со всеми определяемыми сигналами(которые просто сгрупппированы чтобы не писать процесс для каждого отдельного сигнала) должен быть ассоциирован один и тот же список сигналов управления(такова логика Верилог).

так вот из-за того что у ВХДЛ и Верилог имелись разные мотивы побуждающие их происхождение (описание и проектирование) у них и разные взгляды на список чувствительности (в одном случае - ассоциация сигналов списка чувствительности с процессом во втором ассоциация сигналов со схемным элементом(объектом)) /хи-хи : к стати из этой логики получается что Верилог - объектно ориентированный язык по природе своей а ВХДЛ - процедурный :о))) /

 

кстати можно было вообще в список чувствительности добавить все сигналы, и результат синтеза был бы тот же самый!!!

ну правильно компилятор ж не дурак нахрена ему сигналы с неба - по этому поводу в Верилоге давно существует always@* / always_comb который вообще не нуждается в списке - он его сам определяет, а для синхронной логики always_ff который вам ни за что не позволит запихнуть в один блок и синхронный триггер и защёлку (в последнем стандарте эти группировки по признаку синхронизации совершенным образом ужесточились -- наверное неспроста)

 

на несколько процесов, ИМХО это размывает внимание.

а на мой взгляд улучшает лог. организацию (мухи -отдельно, котлеты- отдельно/тфу, блин, ненавижу эту фразу/)

 

Есть в этом и дополнительные преимущества : производительность симулятора ~ кол-ву процессов

вот это к стати очень спорно - симулятор это набор объектов(сигналов) с ассоциированными событиями, если вы запихиваете в процесс с неким списком чувствительности объекты не имеющие чувствительности к этим событиям (то есть ассоциируете эти события с объектами) то без оптимизации со стороны компайлера можно получить некоторое множество объектов с ложным стартом (процедура по их валидации будет гоняться в пустую - но процессорное внемя тратиться будет) /это моё мнение - не факт что правильное/

 

Ну насколько я понимаю 2001 год, в котором был принят стандарт это тоже 21 век, не так ли ? :))

так, так :о) но эт он принят был (в апреле кажись) а вся работа по нему закончилась то ещё в 2000 - а это ХХ век :о)))

однако, des, искренний вам совет смотрите сразу на ай-йа-яй 1800-2005 (всё равно придётся смотреть два стандарта - потому как считай двухтомник \1364-2001 + 1800-2005\), что бы не перетаскивать эти кирпичи с места на места можно хотябы как обзорный курс взять SystemVerilog_for_Design Сюзерленда - он есть сам знаешь где --- мы уже в закрома много книг по этой теме натаскали

меж прочем PSL встроен в СистемВерилог (не совсем конечно ПСЛ но синтаксис практически не отличишь - я также выкладывал Assertion-Based Design Фостера- там и ПСЛ и ОВЛ и СистемВерилог ассершнз)

 

а что вы понимаете под

объектно-ориентированным

языком ?

ну как что? Java знаете? вот СВ это наследник Vera, а Вера на Яву очень похожа, даже автоматическая сборка мусора есть (я в общем-то статью сейчас как раз по верификации использую ООП от СВ пишу - через недельки две будет готова, а если хотите сами посмотреть - то пролистайте из закромов книжки по верификации на СВ - там их несколько штук\4 кажись\)

Share this post


Link to post
Share on other sites

обсуждать мотивы смысла не вижу никакого.

 

а что касается списков чувствительности ответ зырыт в главе 5 Scheduling semantics.

 

Там ясно и просто объясняеться что такое событие в верилоге, каким оно бывает и как симулятор его воспринимает. Все это дополнительно еще завернуто в особености событийного контроля, типов переменых и их свойств.

 

ну правильно компилятор ж не дурак нахрена ему сигналы с неба - по этому поводу в Верилоге давно существует always@* / always_comb который вообще не нуждается в списке - он его сам определяет

 

да но в верилоге с помошью @(*) не опишешь тактируемый фронтом клока тригер , а в вхдл легко.

 

а на мой взгляд улучшает лог. организацию (мухи -отдельно, котлеты- отдельно/тфу, блин, ненавижу эту фразу/)

 

а самая класная организация потригерно :) что бы даже биты отдельно друг от друга :)

тут на вкус и цвет товарища нет.

 

я например работаю на вхдл по принципу процесс == функция высокого уровня. при этом все неободимое этой функции влезает на 1 вертикальный экран 20-24 дюймогово монитора, все сигналы под рукой :)

 

вот это к стати очень спорно - симулятор это набор объектов(сигналов) с ассоциированными событиями, если вы запихиваете в процесс с неким списком чувствительности объекты не имеющие чувствительности к этим событиям (то есть ассоциируете эти события с объектами) то без оптимизации со стороны компайлера можно получить некоторое множество объектов с ложным стартом (процедура по их валидации будет гоняться в пустую - но процессорное внемя тратиться будет)

 

Каждый ищет сам, достаточно взять любой симулятор и натравить профайлер.

 

В синхронных процессах с асинхронным сбросом (в списке чувствительности reset и clk) сброс достаточно редко пользуеться, за сим ложных срабатываний не будет сильно много.

 

Полагаю что дискуссию стоит усыпить до следующего update event. Выхода стандарта VHDL 2007 например. Хотя если захотите поспорить всегда пожалуйста :biggrin:

 

ЗЫ. Яву на знаю и не собираюсь с ней заморачиваться, для моих задач мне С и Python а хватает.

Насчет моделирования на SV, всему свое время. мне всего 450 страниц стандарта на Verilog скурить осталось.

Share this post


Link to post
Share on other sites

я например работаю на вхдл по принципу процесс == функция высокого уровня. при этом все неободимое этой функции влезает на 1 вертикальный экран 20-24 дюймогово монитора, все сигналы под рукой :)

тоже стараюсь работать на РТЛ со смещением в сторону поведения (тот же принцип что у вас,однако при этом всё равно стараюсь придерживаться выше указнной группировки) но не всё так изящно описывать получается

Полагаю что дискуссию стоит усыпить до следующего update event. Выхода стандарта VHDL 2007 например.

согласен. тем более делить особо не чего - у каждого своё понимание.

скорей бы уж вышел -- больно любопытно

:a14:

Share this post


Link to post
Share on other sites

что-то давно не сплетничали. обновим темку:

 

новости из стана ВХДЛ - "Accellera has immediate plans to release

VHDL 4.0 to the IEEE for balloting in 2008 and to support the IEEE

1076-2008 balloting process." ( http://www.reuters.com/article/pressReleas...2008+MW20080220 ).

 

нововведения наиболее полно, компактно и внятно (из того, что я до сих пор видел) сформулированы здесь -> http://www.doulos.com/knowhow/vhdl_designe...uide/vhdl_200x/

 

по нововведениям уже вышла (пока единственная и немного забегая вперёд выход стандарта) книжка "VHDL 2008: Just the New Stuff" (на амазоне есть как обычно оглавление и первые пару страничек)

Share this post


Link to post
Share on other sites

по нововведениям уже вышла (пока единственная и немного забегая вперёд выход стандарта) книжка "VHDL 2008: Just the New Stuff" (на амазоне есть как обычно оглавление и первые пару страничек)
Сравнительно легко находится в Интернете электронный вариант. У меня есть pdf, откуда тянул, не помню. Возможно, что даже с местного ftp.

Share this post


Link to post
Share on other sites

Хорошая книжка. И читается легко. Даже с моим английским. Много вкусного, оказывается, в VHDL-2008! Наконец-то убрали бред с запретом считывания значения порта в режиме выхода!!! Но когда же эту вкуснятину можно будет попробовать? :crying: С ривиерой связываться не хочется, в квесте ее нету, а синтезаторы до сих пор только 93 поддерживают. Ужас.

Share this post


Link to post
Share on other sites

2 andrew_b и Vadim - будьте так любезны, поделитесь литературой...

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.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  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.

×
×
  • Create New...