|
Про ПЛИС и VHDL, Некоторые вопосы |
|
|
|
Jul 12 2011, 10:46
|
Местный
  
Группа: Участник
Сообщений: 368
Регистрация: 18-04-11
Из: Город-герой Москва
Пользователь №: 64 451

|
Всем доброго времени суток. Есть такой вопросик... недавно нарвался в интернете на буржуинском сайте такой кодик, его часть выглядит следующим образом: entity DIVIDER is port (CLK_IN : in Std_logic; RESET : in Std_logic; SPD :in Integer; CLK_OUT :out Std_logic); end; Сначала подумал, что какая то ошибка, но потом проверил вбив подобную строчку в ксилинксовский ISE и... он это дело захавал Никак не могу понять, как порт цифровой микросхемы, может иметь значение отличное от битового? Что это значит то? Как трактовать, что нога у плисины это integer?
|
|
|
|
|
Jul 13 2011, 04:27
|
Профессионал
    
Группа: Свой
Сообщений: 1 975
Регистрация: 30-12-04
Из: Воронеж
Пользователь №: 1 757

|
Цитата(SFx @ Jul 12 2011, 23:51)  в стандарте vhdl написано что все integer должны быть 32 разряда. Это не совсем так. Стандарт гарантирует ширину integer не менее 32 разрядов. Можно больше, это на усмотрение производителей софта. Но я думаю, что производители этим не заморачиваются и делают гарантированный минимум. Под рукой только IEEE Std 1076™-2002. Пункт 3.1.2.1 Predefined integer types Цитата The range of INTEGER is implementation dependent, but it is guaranteed to include the range –2147483647 to +2147483647. It is defined with an ascending range. Если в коде явно указан диапазон, например Код signal cnt : integer range 0 to 7; то разрядность будет минимальной для того, чтобы обеспечить заданный диапазон. В данном случае 3 бита.
|
|
|
|
|
Jul 26 2011, 11:38
|
Местный
  
Группа: Участник
Сообщений: 368
Регистрация: 18-04-11
Из: Город-герой Москва
Пользователь №: 64 451

|
Спасибо. Теперь всё встало на свои места... однако, этот кодик я нашёл не просто так. Хочу реализовать на ПЛИС некоторую операцию, которая содержит операцию деления чисел, а операнды в ней могут быть дробными числами. Уже несколько недель голову ломаю, весь интернет облазил, но ничего дельного так и не нашёл. Может кто нить объяснит, как оперировать с дробными числами. Нарвался на одну статейку, в которой предлагается использовать ксилинксовский корген, который генерит некоторое ядро, которое в свою очередь чё то там делает... но это как то всё мутно... так ничё и не понял...
|
|
|
|
|
Jul 27 2011, 10:54
|
Местный
  
Группа: Участник
Сообщений: 368
Регистрация: 18-04-11
Из: Город-герой Москва
Пользователь №: 64 451

|
а если бы Xilinx это IP не сделал? Или по тем или иным причинам меня бы не удовлетворяла его работа (в одной статье кстати прочёл, что именно в одном из ксилинксовских ядер, работающих с плавающей запятой, существует некоторый косяк. Не проверял не знаю, но знаю, что помимо бесплатного ядра, Xilinx распространяет ещё и платное (как думаете, с каким типом данных оно работает?), отсюда вопрос: шо за дела?). И вообще, я ж не предлагаю лезть в саму микросхему и разбирать её по костачкам... но подход, мол всё уже до нас украдено, а что там да как так трава не расти, то же неправильный!!!  И ещё, извините конечно, без обид, просто уже не первый раз сталкиваюсь с этим... я задал конкретный вопрос... хочу услышать конкретный ответ... а если хочется мысли на кулаки понаворачивать... так это вам к философам... им деньги платят за то, что б они ничё не делали... у них профессия такая...
|
|
|
|
|
Jul 27 2011, 12:37
|
Участник

Группа: Validating
Сообщений: 55
Регистрация: 6-04-11
Пользователь №: 64 180

|
Цитата(Грендайзер @ Jul 26 2011, 15:38)  Хочу реализовать на ПЛИС некоторую операцию, которая содержит операцию деления чисел, а операнды в ней могут быть дробными числами. Дробные числа представляются в формате: - с фиксированной точкой (fixed-point); - с плавающей точкой (float-point). У вас что? Какая разрядность? и т.д. ... Сформулировать точнее можете? Цитата(Грендайзер @ Jul 26 2011, 15:38)  Уже несколько недель голову ломаю, весь интернет облазил, но ничего дельного так и не нашёл. Может кто нить объяснит, как оперировать с дробными числами. Fixed-point arithmetic Float-point arithmetic Книги по цифровой электронике. Насчет integer. Т.е., например, std_logic_vector (105 downto 23) - у Вас вопросов не вызывает? Назначение в VHDL типа с плавающей точкой (REAL), физических типов (TIME) для Вас очевидно? Если да, то чего нервничаете так?
|
|
|
|
|
Jul 28 2011, 06:20
|
Местный
  
Группа: Участник
Сообщений: 368
Регистрация: 18-04-11
Из: Город-герой Москва
Пользователь №: 64 451

|
С плавающей или с фиксированной запятой, значения не имеет... В случае оперирования десятичными числами, округления до 4-ого знака, будит вполне достаточно. Цитата Насчет integer. Т.е., например, std_logic_vector (105 downto 23) - у Вас вопросов не вызывает? Назначение в VHDL типа с плавающей точкой (REAL), физических типов (TIME) для Вас очевидно? Если да, то чего нервничаете так? Не допонял, что Вы имеете в виду? Причём тут real или time? Их же синтезировать всёрано не выйдет...
|
|
|
|
|
Jul 28 2011, 08:23
|
Участник

Группа: Validating
Сообщений: 55
Регистрация: 6-04-11
Пользователь №: 64 180

|
Цитата(Грендайзер @ Jul 28 2011, 10:20)  С плавающей или с фиксированной запятой, значения не имеет... Имеет. Надо выбрать. Цитата(Грендайзер @ Jul 28 2011, 10:20)  В случае оперирования десятичными числами, округления до 4-ого знака, будит вполне достаточно. Что значит "оперирования десятичными числами"? Делитель для BCD-кодов? Выражайтесь точнее. Цитата(Грендайзер @ Jul 28 2011, 10:20)  Не допонял, что Вы имеете в виду? Причём тут real или time? Их же синтезировать всёрано не выйдет... То, что VHDL не только для синтеза используют. На нем еще тест-бенчи пишут. И тот вышеуказанный Вами делитель с "буржуйского сайта" (ссылку привели бы что-ли...) возможно и не для синтеза был написан (хотя и синтезируется).
|
|
|
|
|
Jul 28 2011, 08:51
|
Местный
  
Группа: Участник
Сообщений: 368
Регистрация: 18-04-11
Из: Город-герой Москва
Пользователь №: 64 451

|
Цитата То, что VHDL не только для синтеза используют. На нем еще тест-бенчи пишут. И тот вышеуказанный Вами делитель с "буржуйского сайта" (ссылку привели бы что-ли...) возможно и не для синтеза был написан (хотя и синтезируется). Да, спасибо, это я ещё тогда осознал, когда попытался в ISE эту штуку откомпелировать... естественно компелятор меня матом покрыл, а вот отмоделировалось всё чётко  . Цитата Что значит "оперирования десятичными числами"? Делитель для BCD-кодов? Выражайтесь точнее. Честно говоря я сейчас, вообще ничё не понял, что Вы такое сказали... ну да Бог с ним... меня уже долго мучает вот такой вопрос... как к примеру 5 поделить скажем на 2 и найти хотя бы неполное частное или остаток? Конечно, я могу воспользоваться функцией mod или скажем поделить напрямую, т. е. 5/2 = 2, но! что если мне надо, что бы операнды были переменными? Вот тут меня компелятор шлёт по известному адресу  Конечно, я могу вычитать из пяти двойку, и каждый раз проверять не стала ли разность меньше делителя (т. е. 2), и всё пучком... два такта и готово  Однако... если бы у меня не 5 было, а скажем 57 или 535 или 5896743489 эт сколько мне тахтов то убивать на это дело?  Немогли бы Вы на мысль натолкнуть так сказать... А потом уже возможно я с плавающими и фиксированными запятыми сам докумекаю...
Сообщение отредактировал Грендайзер - Jul 28 2011, 08:55
|
|
|
|
|
Jul 28 2011, 09:24
|
Участник

Группа: Validating
Сообщений: 55
Регистрация: 6-04-11
Пользователь №: 64 180

|
Цитата(Грендайзер @ Jul 28 2011, 12:51)  как к примеру 5 поделить скажем на 2 и найти хотя бы неполное частное или остаток? Это частный случай, и он очень простой. Деление на степень двойки (2, 4, 8, 16, 32 ...) - это двиг влево на число разрядов, равное степени двойки. Пример 1. 5 10 (число пять в десятичной форме) пишем в двоичном виде (для примера в четырех разрядном) - 0101. 5 / 2 = 0101 >> 1 = 0 010 = 2 105 / 4 = 0101 >> 2 = 00 01 = 1 10и т.д. ( кое-какие детали есть при делении чисел со знаком). Это целочисленное деление с отбрасыванием остатка. Теперь вариант с фиксированной точкой. Например, будет 4 разряда для целой части и 2 - для дробной: 5 / 2 = 0101.00 >> 1 = 0 010.10 = 2.5 105 / 4 = 0101.00 >> 2 = 00 01.01 = 1.25 10Вам бы книжни по этой теме почитать, яснее будет. Цитата(Грендайзер @ Jul 28 2011, 12:51)  Конечно, я могу воспользоваться функцией mod или скажем поделить напрямую, т. е. 5/2 = 2 Даже не знаю... Как у Вас обстоит дело со сложением/вычитанием на ПЛИС? Последовательный сумматор могём?
|
|
|
|
|
Jul 28 2011, 09:40
|
Местный
  
Группа: Участник
Сообщений: 368
Регистрация: 18-04-11
Из: Город-герой Москва
Пользователь №: 64 451

|
мммм... последовательный сумматор... я честно говоря в этой терминологии не силён... но уверен, что в какой то книжке (помоиму в буржуйской) видел что то в этом духе... токо там фраза была, мне её гугл перевёл как "конвейерный сумматор", это не одно и то же? Я накачал несколько книжек по этому делу, но чё то какие то они "отвлечённые", может посоветуете что нибудь? И ещё последний вопросик, если можно  ... А как быть, если скажем делитель это не двойка и даже не степень двойки, а скажем 3 или что то в этом духе?
Сообщение отредактировал Грендайзер - Jul 28 2011, 09:43
|
|
|
|
|
Jul 28 2011, 11:36
|
Участник

Группа: Validating
Сообщений: 55
Регистрация: 6-04-11
Пользователь №: 64 180

|
Угрюмов "Цифровая схемотехника", например. И т.п. 1) Берем готовый делитель для целых - модуль с входами и выходами. Находим нужной разрядности. Надо с остатком - ищем с остатком. Надо со знаком... и т.д. CoreGen Вам уже советовали. А баги... Баги у всех есть. И у Вас будут. Были баги - и нету багов. Мелочи... Почитаете даташит на ксайлиновский делитель, сконфигурируете как хочется (что такое divident, quotient, divisor и др. - разберетесь). 2) Пользуемся структурным описанием. Подаем на входы операнды, снимаем результат... Голая цифровая схемотехника, без всяких синтаксических vhdl изъёбов. 3) Теперь имеем делитель, например, двух 16-разрядных операндов (целых) с 16-разрядным результатом. Как поделить им дробные? Суть в использовании фиксированной точки, правильном представлении входных данных, правильной интерпретации выходных данных. Пример для делителя двух 16-бит беззнаковых. Можно делить целые числа. 23 10 = 00000000_00010111 47 10 = 00000000_00101111 На входы делителя подаем: 00000000_00010111 00000000_00101111 На выходе имеем 00000000_00000010, т.е. 2 10 (и остаток, если делитель его выдает) 47 / 23 = 2 Можно дробные... Вариант 1: 23 10 = 00000001_0111.0000 (12 бит - целая часть, 4 - дробная) 47 10 = 00000010_1111.0000 (12 бит - целая часть, 4 - дробная) На входы делителя подаем: 00000001_01110000 (делитель) 00000010_11110000 (делимое) На выходе имеем (частное): 00000000_00000010 Поскольку у делимого и у делителя по 4 разряда на дробную часть, то 4 - 4 = 0. Т.е. у результата точка справа от нулевого разряда. Значит результат интерпретируется так: 00000000_00000010. = 2 10Вариант 2: 23 10 = 00000000_00010111 (16 бит - целая часть) 47 10 = 00000010_1111.0000 (12 бит - целая часть, 4 - дробная) На входы делителя подаем: 00000000_00010111 (делитель) 00000010_11110000 (делимое) На выходе имеем: 00000000_00100000 (плохой пример  , ну да ладно.) У делимого на дробную часть отведено 4 разряда, у делителя - 0. Значит 4 - 0 = 4 - столько разрядов будет отведено у частного (результат) на дробную часть. Значит результат интерпретируется так: 00000000_0010.0000 = 2 10Еще раз вариант 2 ( с другими операндами - 16 и 5  ): 05 10 = 00000000_00000101 (16 бит - целая часть) 16 10 = 00000001_0000.0000 (12 бит - целая часть, 4 - дробная) На входы делителя подаем: 00000000_00000101 (делитель) 00000001_00000000 (делимое) На выходе имеем: 00000000_00110011 У делимого на дробную часть отведено 4 разряда, у делителя - 0. Значит 4 - 0 = 4 - столько разрядов будет отведено у частного (результат) на дробную часть. Значит результат интерпретируется так: 00000000_0011.0011 = 3.1875 10Ясна идея?
|
|
|
|
|
Aug 4 2011, 12:35
|
Участник

Группа: Участник
Сообщений: 55
Регистрация: 25-07-11
Пользователь №: 66 407

|
Предложу пример модуля работы с плавающей точкой. Код library IEEE; use IEEE.STD_LOGIC_1164.ALL; use IEEE.STD_LOGIC_ARITH.ALL; use IEEE.STD_LOGIC_UNSIGNED.ALL;
entity matem is Port ( clk40 : in STD_LOGIC; clk160 : in STD_LOGIC; iowr : in STD_LOGIC; st : in STD_LOGIC; addr : in STD_LOGIC_VECTOR (31 downto 0); data : in STD_LOGIC_VECTOR (31 downto 0); dq : out STD_LOGIC_VECTOR (31 downto 0) ); end matem;
architecture Behavioral of matem is
signal ma, mb, madd, mmult, mdiv, f_to_s, s_to_f, msqrt : std_logic_VECTOR(31 downto 0); signal mampl, matan: std_logic_vector(31 downto 0); signal mcmp_int: std_logic_VECTOR(0 downto 0); signal mcmp: std_logic_vector(31 downto 0); signal op: std_logic_vector(5 downto 0);
component f_add port ( a: IN std_logic_VECTOR(31 downto 0); b: IN std_logic_VECTOR(31 downto 0); operation: in std_logic_vector(5 downto 0); clk: IN std_logic; result: OUT std_logic_VECTOR(31 downto 0)); end component; component f_cmp port ( a: IN std_logic_VECTOR(31 downto 0); b: IN std_logic_VECTOR(31 downto 0); operation: in std_logic_vector(5 downto 0); clk: IN std_logic; result: OUT std_logic_VECTOR(0 downto 0)); end component; component f_mult port ( a: IN std_logic_VECTOR(31 downto 0); b: IN std_logic_VECTOR(31 downto 0); clk: IN std_logic; result: OUT std_logic_VECTOR(31 downto 0)); end component; component s_f port ( a: IN std_logic_VECTOR(31 downto 0); clk: IN std_logic; result: OUT std_logic_VECTOR(31 downto 0)); end component; component f_s port ( a: IN std_logic_VECTOR(31 downto 0); clk: IN std_logic; result: OUT std_logic_VECTOR(31 downto 0)); end component; component f_div port ( a: IN std_logic_VECTOR(31 downto 0); b: IN std_logic_VECTOR(31 downto 0); clk: IN std_logic; result: OUT std_logic_VECTOR(31 downto 0)); end component;
begin fadd : f_add port map ( a => ma, b => mb, operation => op, clk => clk160, result => madd); fcmp : f_cmp port map ( a => ma, b => mb, operation => op, clk => clk160, result => mcmp_int); fmult : f_mult port map ( a => ma, b => mb, clk => clk160, result => mmult); sf : s_f port map ( a => ma, clk => clk160, result => s_to_f); fsa : f_s port map ( a => ma, clk => clk160, result => f_to_s); fdiv : f_div port map ( a => ma, b => mb, clk => clk160, result => mdiv);
process(clk40) begin if rising_edge(clk40) then if iowr = '1' and conv_integer(addr) = 1505 then ma <= data; end if; if iowr = '1' and conv_integer(addr) = 1506 then mb <= data; end if; if iowr = '1' and conv_integer(addr) = 1507 then op <= data(5 downto 0); end if; end if; end process;
mcmp <= x"FFFFFFFF" when mcmp_int = "1" else x"00000000";
with conv_integer(addr) select dq <= madd when 1500, mmult when 1501, mdiv when 1502, f_to_s when 1503, s_to_f when 1504, mcmp when 1505, (others => 'Z') when others;
end Behavioral; Использовался модуль как математический сопроцессор (хотя управляться он может как угодно) рядом с самописным процессором. Плавающая точка реализована набором IP-ядер, формат выбран Single (одинарная точность). f_to_s - преобразование из плавающего в целое. s_to_f - наоборот. Управляется модуль системной шиной, которая реализована в виде 4 линий. Адреса (addr), Данных (data), ВыходныхДанных (dq), СигналаЗаписи (iowr). Для записи операндов в модуль выставляем нужный адресс (if iowr = '1' and conv_integer(addr) = 1505 then ma <= data; end if;), например 1505 для операнда A и поднимаем в 1 сигнал iowr. Для чтения просто выставляем адресс и читаем линию dq. Посмотрите даташиты на эти модули, чтобы лучше понять, как они работают (например, разобраться что делает линия operation тут). При генерации любого IP-ядра, где то рядом есть кнопочка "datasheet" или что-то подобное.
|
|
|
|
|
Aug 4 2011, 13:15
|
Местный
  
Группа: Участник
Сообщений: 368
Регистрация: 18-04-11
Из: Город-герой Москва
Пользователь №: 64 451

|
Да, спасибо, обязательно попробую получше разобраться с вашим кодом. Кстати, о даташитах... я тоже сгенерил одно ядро при помощи коргена, и тут у меня возникла проблема... Я мягко говоря не очень понимаю, как работают эти ядра (в смысле, как интерпретировать эти коды, состоящие в основном из компонентов, описание которых не понять где)... иии вопрос в следующим... как это всё хозяйство смоделировать то?  Я подцеплял этот прожект моделсимом... но... он пишет, что не может найти библиотеку, которая в данном проекте используется (XilinxCoreLib), и как быть, где её взять... как понять, правильно ли мой проект работает?
|
|
|
|
|
Aug 5 2011, 06:27
|
Участник

Группа: Участник
Сообщений: 55
Регистрация: 25-07-11
Пользователь №: 66 407

|
Цитата(Грендайзер @ Aug 4 2011, 17:15)  Кстати, о даташитах... я тоже сгенерил одно ядро при помощи коргена, и тут у меня возникла проблема... Я мягко говоря не очень понимаю, как работают эти ядра (в смысле, как интерпретировать эти коды, состоящие в основном из компонентов, описание которых не понять где) О даташитах вроде писалось. В диалоге создание IP-ядра должна быть кнопочка. Или, как вариант, посмотреть тут http://www.xilinx.com/support/. На русском такую информацию вряд ли удастся найти, и это, скорее всего будет перевод этих же даташитов, только постоянно устаревающий и не учитывающий последние изменения. Хотя таблицы, временные диаграммы и т.п. знания английского, по сути, и не требуют. Цитата(Грендайзер @ Aug 4 2011, 17:15)  ... иии вопрос в следующим... как это всё хозяйство смоделировать то?  Я подцеплял этот прожект моделсимом... но... он пишет, что не может найти библиотеку, которая в данном проекте используется (XilinxCoreLib), и как быть, где её взять... как понять, правильно ли мой проект работает? Вот про моделирование сразу не отвечу. На рабочем месте ISE не стоит, а на второе рабочее место я приду, скорее всего, не раньше вторника.
|
|
|
|
|
Aug 10 2011, 10:23
|
Участник

Группа: Validating
Сообщений: 55
Регистрация: 6-04-11
Пользователь №: 64 180

|
Цитата(Грендайзер @ Aug 10 2011, 12:26)  Был бы очень признателен за ответ Грендайзер, а Вы сами то поискать ответ пробовали? Погуглить, например? По ключевому слову XilinxCoreLib? http://www.kxcad.net/electronic_Xilinx_gui...compile_lib.htmИли с английским не лады?
|
|
|
|
|
Aug 11 2011, 10:15
|
Участник

Группа: Validating
Сообщений: 55
Регистрация: 6-04-11
Пользователь №: 64 180

|
Тады вот Вам чиста канкрэтика (чиста канкретна по "моей" сцылке): Цитата The XilinxCoreLib library is used during functional simulation for designs that contain IP cores created by the CORE Generator™. Before starting the functional simulation of your design, you must compile the XilinxCoreLib library for your target simulator. Ну это понятно... Или нет? Цитата Compiling the XilinxCoreLib Library Within ISE
The ISE Project Navigator has a Compile HDL Simulation Libraries process that can be used to compile the XilinxCoreLib Library. For the procedure to compile the library, see Compiling HDL Simulation Libraries in the ISE Help. Кореген нагенерил Вам кучу файлов, среди них есть *.xise. Делаем по нему дабл-клик. Открывается ISE Project Navigator. В дереве проекта щелкаем на самой верхней строчке. Хопа!!! В нижнем окне доступных процессов появилась строчка Compile HDL Simulation Libraries. Щелкаем на этой строчке правой кнопкой мыши. В открывшемся подменю (мляяя!!! я превращаюсь в Зотова  ... знаете такого автора?  ) выбираем строчку Process Properties. Дальше откроется окно с настройками. Самое главное там - указать target simulator. Самое страшное - я сам лично этого никогда не делал (т.к. употребляю актив-хдл), поэтому ничего не гарантирую. Цитата(Грендайзер @ Aug 11 2011, 13:15)  Пробовал... но чё то всёравно ничего не понятно... и по вашей ссылке... чё т конкретики маловато... я этим несколько месяцев занимаюсь всего, и пока вот так на лету не могу всё в кучку собрать... А Вы в каком классе то учитесь, если не секрет?
|
|
|
|
|
Aug 11 2011, 12:36
|
Участник

Группа: Участник
Сообщений: 55
Регистрация: 25-07-11
Пользователь №: 66 407

|
Цитата(R.A.K. @ Aug 11 2011, 14:15)  (мляяя!!! я превращаюсь в Зотова  ... знаете такого автора?  ) Переписывание справок и стиль "что вижу - то пою"  Цитата(Грендайзер @ Aug 11 2011, 13:15)  Пробовал... но чё то всёравно ничего не понятно... и по вашей ссылке... чё т конкретики маловато... я этим несколько месяцев занимаюсь всего, и пока вот так на лету не могу всё в кучку собрать... Вообще я не очень хорошо отношусь к позиции "непонятно всё!". Это может означать только то, что человек вообще ничего не пытался понять. Если были хоть какие то попытки, то все начинает делится на понятные фрагменты и непонятные (которые впоследствии можно объяснить, опираясь на то, что уже понятно). Судя по предыдущим сообщениям, Вы недопонимаете двоичную арифметику и двоичное представление чисел. Эта информация может быть найдена в доброй половине книг по любому языку программирования, или гуглением на эту тему.
|
|
|
|
|
Aug 12 2011, 12:25
|
Местный
  
Группа: Участник
Сообщений: 368
Регистрация: 18-04-11
Из: Город-герой Москва
Пользователь №: 64 451

|
Цитата А Вы в каком классе то учитесь, если не секрет? sm.gif Я уже отучился, везде... почти... только вот, там где я учился про плис скозали примерно следующее "ПЛИС - это хитрое устройство, принцип работы которого понять очень сложно", а вот так получилось, что пришлось с ними засесть поближе, только спросить не у кого, а в одиночку всё осмыслить быстро и правильно - эт не у всех выходит За разъяснения, спасибо, попробую поколдовать, может что и вырулим
|
|
|
|
|
Aug 12 2011, 21:20
|
Участник

Группа: Validating
Сообщений: 55
Регистрация: 6-04-11
Пользователь №: 64 180

|
Цитата(Грендайзер @ Aug 12 2011, 16:25)  Я уже отучился, везде... почти... только вот, там где я учился про плис скозали примерно следующее "ПЛИС - это хитрое устройство, принцип работы которого понять очень сложно" Того, кто это сказал, за яйцы бы подвесить конечно не помешало бы. Но это ничего. Вы главное с английским по-дружнее, да документацию читать не робейте. Ксайлиновские апноуты и white papers пробуйте читать (заодно по английскому словарный запас расширите  ). Еще посоветую вот это: 1) Клайв Максфилд "Проектирование на ПЛИС. Курс молодого бойца". Эдакая обзорная книжка по теме, написана очень легко (соответственно и читается также). 2) Потехин, Тарасов "Разработка систем цифровой обработки сигналов на базе ПЛИС". Местами там, правда, жестковато (перестарались мужики  ). Но хотя бы половину первой главы стоит (про двоичную арифметику). 3) Если "Цифровую схемотехнику" Угрюмова еще не читали, то тоже порекомендую. Всю не стоит, можно первые несколько глав (булева логика, автоматы и т.д.), и главы про ПЛИС.
|
|
|
|
|
Aug 15 2011, 06:54
|
Местный
  
Группа: Участник
Сообщений: 368
Регистрация: 18-04-11
Из: Город-герой Москва
Пользователь №: 64 451

|
Спасибо. А по поводу английского так это Вы с рекомендацией позновато  Уже давно читаю в основном исключительно аглицкую литературу (и действительно, английский сильно подтянулся  ). Особенно помогла (на первых порах) книга FPGA Prototyping by VHDL Examples: Xilinx Spartan-3 Version Pong P. Chu, и ещё скачал книгу Synthesis of Arithmetic Circuits: FPGA, ASIC and Embedded Systems Jean-Pierre Deschamps (не всё в ней мне понятно, в смысле самого материала, но кое что подчерпнул), эт я привёл если вдруг кому будит интересно... Что же касается нашей литературы, то после прочтения реда буржуинских книг, в груди появилось непонятное щемящее чувство, того, что в наши авторы не совсем понимают, порой, что они пишут... и как бы это помягче то... стиль написания книг нашими авторами, очень напоминает стиль иностранцев... более того, в некоторых наших книжках нашёл картинки и отрывки текста почти полностью содранные у иностранцев
|
|
|
|
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|