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

Захват ШИМ сигнала...

коренное отличие 3 битного инта от 3 битного стд_логик_вектора

что для стд_логик_вектора по умолчанию 100 - это 4,

а для инта это -4

соответственно

111 - это для стд_логик_вектора 7

а для инта это -1.

Это не совсем так. std_logic_vector --- это просто массив бит. Все дело в его интерпетации. Интерпетация как знаковое число в двоично-дополнительном коде --- одна из возможных.

 

 

Да Вы наверное правы, примерно это я и пытался сказать, но у вас получилось короче и понятнее:)...

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


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

А как тогда integer выставить в третье состояние?

 

В том то и дело, что никак. Тип std_logic как раз и был придуман для моделирования поведения реальных цепей. Поэтому переменная типа std_logic может принимать не два значения: '0' или '1', а девять значений, среди которых 'X' - "неопределенность" и 'Z' - третье состояние.

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


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

Boт стандартные преобразователи этих типов:

library ieee;

use ieee.std_logic_1164.all;

use ieee.std_logic_arith.all;

package conversions is

function to_integer (a: std_logic_vector) return integer;

function to_vector (size: integer; num: integer) return std_logic_vector;

end conversions;

package body conversions is

function to_integer (a : std_logic_vector ) return integer is

vatiable return_int,x_tmp : integer := 0;

begin

for i in a'range loop

return_int := return_int * 2;

if (a(i) = '1') then

return_int := return_int + 1;

end if;

end loop;

return return_int;

end to_integer;

------------------------------

function to_vector (size: integer; num: integer) return std_logic_vector is

variable ret: std_logic_vector (1 to size);

variable a: integer;

begin

a := num;

for i in size downto 1 loop

if ((a mod 2) = 1) then

ret(i) := '1';

else

ret(i) := '0';

end if;

a := a / 2;

end loop;

return ret;

end to_vector;

end conversions;

--------------------------------

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


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

Boт стандартные преобразователи этих типов:

Зачем вы изобретаете велосипед, переписывая уже существующие функции?

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


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

А где я могу просмотреть ieee.std_logic_arith.all, оно должно валяться гдето в софте(Квартус).

Но я именно эту не нашел....

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


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

А где я могу просмотреть ieee.std_logic_arith.all, оно должно валяться гдето в софте(Квартус).

Но я именно эту не нашел....

Плохо искали: C:\altera\quartus51\libraries\vhdl\synopsys\. Да и зачем ее искать.

Но про std_logic_arith, std_logic_signed и std_logic_unsigned надо забыть, ибо это нестандартные пакеты. Надо использовать ieee.numeric_std (C:\altera\quartus51\libraries\vhdl\ieee\numeric_std.vhd).

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


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

Но про std_logic_arith, std_logic_signed и std_logic_unsigned надо забыть, ибо это нестандартные пакеты.

 

Вот в этом месте хотелось бы подробностей.

Почему про std_logic_signed и std_logic_unsigned стоит забыть?

В Xilinx ISE 7.1, например, при подключении к проекту нового VHDL файла в заголовок по умолчанию

добавдяются такие строки:

library IEEE;
use IEEE.STD_LOGIC_1164.ALL;
use IEEE.STD_LOGIC_ARITH.ALL;
use IEEE.STD_LOGIC_UNSIGNED.ALL;

Это как тогда понимать - Xilinx навязывает применение нестандартных пакетов?

Как я предполагаю, quartus делает то же самое. (квартуса у меня нет - так что в этом не уверен)

Поясните Вашу точку зрения.

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


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

Но про std_logic_arith, std_logic_signed и std_logic_unsigned надо забыть, ибо это нестандартные пакеты.

 

Вот в этом месте хотелось бы подробностей.

Почему про std_logic_signed и std_logic_unsigned стоит забыть?

В Xilinx ISE 7.1, например, при подключении к проекту нового VHDL файла в заголовок по умолчанию

добавдяются такие строки:

library IEEE;
use IEEE.STD_LOGIC_1164.ALL;
use IEEE.STD_LOGIC_ARITH.ALL;
use IEEE.STD_LOGIC_UNSIGNED.ALL;

Это как тогда понимать - Xilinx навязывает применение нестандартных пакетов?

Как я предполагаю, quartus делает то же самое. (квартуса у меня нет - так что в этом не уверен)

Я не знаю, что они там делают, я этими "фичами" не пользуюсь и за них не ответчик. Мой текстовый редактор подобной самодеятельности не проявляет.

Поясните Вашу точку зрения.

Уже несколько раз обсуждалось и здесь, и на Телесистемах. Эти пакеты не входят в стандарт IEEE1076.

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


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

я в этом деле конечно новичок. Но когда мне подключил исе 7.1 эти пакеты то я не напрягаясь сделал пару проектов, быстро удобно, интуитивно понятно. Как только решил встать взрослым и выкинуть их как тут все советуют, стал натыкаться на проблемы, затыки и трудности.

 

Может их нет потому что они удобные, новые, и потому еще не описаны? По моему это излишний консерватизм, подключение этого пакета много что делает удобным, но ничего не запрещает, вам же никто не запрещает к этому всему еще и нумерик добавить, и механизм отличия одинаковых функций в разных библиотеках во VHDL тоже есть...

 

Проблемы иногда возникают с симулятором, но сколько я тут не искал, и даже не вопрошал никто не ответил как побороть эти проблемы, не все мои проблемы боролись просто другим набором библиотек... Может стоит поверить авторитету фирмы ксалинкс, не совсем же у них зеленые программеры сидят что по умолчанию проект с такими библиотеками делают?

 

 

Хотя если честно это уже не по теме...

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


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

я в этом деле конечно новичок. Но когда мне подключил исе 7.1 эти пакеты то я не напрягаясь сделал пару проектов, быстро удобно, интуитивно понятно. Как только решил встать взрослым и выкинуть их как тут все советуют, стал натыкаться на проблемы, затыки и трудности.

 

Может их нет потому что они удобные, новые, и потому еще не описаны? По моему это излишний консерватизм, подключение этого пакета много что делает удобным, но ничего не запрещает, вам же никто не запрещает к этому всему еще и нумерик добавить, и механизм отличия одинаковых функций в разных библиотеках во VHDL тоже есть...

 

Проблемы иногда возникают с симулятором, но сколько я тут не искал, и даже не вопрошал никто не ответил как побороть эти проблемы, не все мои проблемы боролись просто другим набором библиотек... Может стоит поверить авторитету фирмы ксалинкс, не совсем же у них зеленые программеры сидят что по умолчанию проект с такими библиотеками делают?

 

 

Хотя если честно это уже не по теме...

 

мля, мля, мля, мля

 

вы хоть в пакеты заглядывали ????

код читали ???

 

--------------------------------------------------------------------------

-- --

-- Copyright © 1990, 1991, 1992 by Synopsys, Inc. --

-- All rights reserved. --

-- --

-- This source file may be used and distributed without restriction --

-- provided that this copyright statement is not removed from the file --

-- and that any derivative work contains this copyright notice. --

-- --

-- Package name: STD_LOGIC_UNSIGNED --

-- --

-- --

-- Date: 09/11/92 KN --

-- 10/08/92 AMT --

-- --

-- Purpose: --

-- A set of unsigned arithemtic, conversion, --

-- and comparision functions for STD_LOGIC_VECTOR. --

-- --

-- Note: comparision of same length discrete arrays is defined --

-- by the LRM. This package will "overload" those --

-- definitions --

-- --

--------------------------------------------------------------------------

 

и второй

-- $Id: numeric_std.vhd,v 1.1 2003/01/17 19:41:54 kumar Exp $

-- --------------------------------------------------------------------

--

-- Copyright 1995 by IEEE. All rights reserved.

--

-- This source file is considered by the IEEE to be an essential part of the use

-- of the standard 1076.3 and as such may be distributed without change, except

-- as permitted by the standard. This source file may not be sold or distributed

-- for profit. This package may be modified to include additional data required

-- by tools, but must in no way change the external interfaces or simulation

-- behaviour of the description. It is permissible to add comments and/or

-- attributes to the package declarations, but not to change or delete any

-- original lines of the approved package declaration. The package body may be

-- changed only in accordance with the terms of clauses 7.1 and 7.2 of the

-- standard.

--

-- Title : Standard VHDL Synthesis Package (1076.3, NUMERIC_STD)

--

-- Library : This package shall be compiled into a library symbolically

-- : named IEEE.

--

-- Developers : IEEE DASC Synthesis Working Group, PAR 1076.3

--

-- Purpose : This package defines numeric types and arithmetic functions

-- : for use with synthesis tools. Two numeric types are defined:

-- : -- > UNSIGNED: represents UNSIGNED number in vector form

-- : -- > SIGNED: represents a SIGNED number in vector form

-- : The base element type is type STD_LOGIC.

-- : The leftmost bit is treated as the most significant bit.

-- : Signed vectors are represented in two's complement form.

-- : This package contains overloaded arithmetic operators on

-- : the SIGNED and UNSIGNED types. The package also contains

-- : useful type conversions functions.

-- :

-- : If any argument to a function is a null array, a null array is

-- : returned (exceptions, if any, are noted individually).

--

-- Limitation :

--

-- Note : No declarations or definitions shall be included in,

-- : or excluded from this package. The "package declaration"

-- : defines the types, subtypes and declarations of

-- : NUMERIC_STD. The NUMERIC_STD package body shall be

-- : considered the formal definition of the semantics of

-- : this package. Tool developers may choose to implement

-- : the package body in the most efficient manner available

-- : to them.

--

-- --------------------------------------------------------------------

-- modification history :

-- --------------------------------------------------------------------

-- Version: 2.4

-- Date : 12 April 1995

-- -----------------------------------------------------------------------------

 

дальше надеюсь сами додумаете что и почему

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


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

....Так вот, кодеки выдают значения в формате 1,15.

Посоветуйте как его реализовать на ПЛИС(симневаюсь что есть готовые стандартные функции)

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


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

Уважаемый andrew_b и des00, не пудрите мозги начинающим.

Использовать или не использовать

ieee.numeric_std это дело вкуса, но я вижу, что большинство даже профи

не любят этот пакет, поскольку он не совместим с обычным

ieee.std_logic_arith (например, describtor/function "signed").

Большинство не пишут с нуля все свои коды, а используют или

ранее подготовленые или полученные откуда-либо, например с того

же зайлинкса или opencores, где в 90% нормальных кодов не будет ieee.numeric_std,

если только не используется расширенная арифметика.

А если все-таки будет - то получается "mixed"

design со сложностями из-за несответствия типов. И вот тут как раз

может пригодится "джентльменский набор" функций преобразования

(плюс что-то еще полезное типа фунции log2 с дополнением до ближайшего целого)

в отдельном файле, использующим только

старую добрую ieee.std_logic_1164 и с уникальными именами функций.

Фрагмент такого моего файла я привел для г-на Golikov с чисто познавательными целями,

но не только: г-да начинающие, не слушайе этих высокомерных гуру, а делайте так,

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

Гн.Golikov A: первая функция сканирует std_logic_vector "a" от LSB

к MSB и добавляет 2 в степени i к предварительно обнуленному результату "return_int",

если текущий разряд не '0'.

Вторая функция работает наоборот. Если нужно, могу описать и ее.

Если нужно, могу послать и свой "джентльменский" "replaced-functions+" набор.

Но ничего не навязываю!

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


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

Уважаемый andrew_b и des00, не пудрите мозги начинающим.

Использовать или не использовать

ieee.numeric_std это дело вкуса, но я вижу, что большинство даже профи

не любят этот пакет, поскольку он не совместим с обычным

ieee.std_logic_arith (например, describtor/function "signed").

Большинство не пишут с нуля все свои коды, а используют или

ранее подготовленые или полученные откуда-либо, например с того

же зайлинкса или opencores, где в 90% нормальных кодов не будет ieee.numeric_std,

если только не используется расширенная арифметика.

 

Скажите мне пожалуйста где я именно пудрю мозги ?

сама ieee НЕ РЕКОМЕНДУЕТ использовать std_logic_unsigned, .... signed, ... arith в новых разработках,

а вот все основыне книги написанны на основе старых стандартов, более новые это перепечатки старых,

поэтому люди и участья писать по старому, да если это разработк ДЛЯ себя или для случая когда ваш код

 

НИКОГДА не будет предлагаться именно как код вы можете делать как вам удобно.

Основное преимущество numeric_std в том что это стандарт, все функции оговорены стандартом, и не могу вести себя по другому.

 

Корки от хилых и альтер да используют старые пакеты, но при этом у них есть джентельменское соглашение про то, что в портах ходит ТОЛЬКО std_logic_vector, что позволяет использовать разные пакеты в одном и том же проекте.

 

какие именно пакеты использовать решать вам, но нужно ЧЕТКО предствлять какой пакет что делает.

 

Желаю удачи.

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


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

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

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

Гость
К сожалению, ваш контент содержит запрещённые слова. Пожалуйста, отредактируйте контент, чтобы удалить выделенные ниже слова.
Ответить в этой теме...

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

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

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

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

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

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