Вот такая конструкция у меня работает: (взято отсюда)
Код: Выделить всё
hr_pwm <= ("00"& output) + (output & "00"); -- это типа умножение на 5Код: Выделить всё
hr_pwm <= ("00"& output) + (output & "00"); -- это типа умножение на 5в сумме пишет ошибку :"не может иметь такого операнда в этом контексте."uldemir писал(а):в 48-й и 49-й по одному нулю не хватает. слева. Всего должно быть 10 бит. ориентируйтесь на тот стоолбик, что я написал вначале. А вот почему не идёт сумма... не знаю. Может слишком много аргументов?
Вот такая конструкция у меня работает: (взято отсюда)Код: Выделить всё
hr_pwm <= ("00"& output) + (output & "00"); -- это типа умножение на 5
Код: Выделить всё
library IEEE;
use IEEE.STD_LOGIC_1164.ALL;
use IEEE.STD_LOGIC_ARITH.ALL;
use IEEE.STD_LOGIC_UNSIGNED.ALL;проглотило все после подключения библиотек..даж до суммы до 6=))а в файл ufc что прописывать?это?uldemir писал(а):Попробуйте написать result <= sum2+sum3; - проглотит ли если два операнда? А ищё... библиотеки подключены? типа:Код: Выделить всё
library IEEE; use IEEE.STD_LOGIC_1164.ALL; use IEEE.STD_LOGIC_ARITH.ALL; use IEEE.STD_LOGIC_UNSIGNED.ALL;
прошивка идет через прогу adept читающий bit файл..без ucf bitовский файл не будет=(uldemir писал(а):когда я интересовался этой платкой, на сайте digilent-а нашел совершенно готовый файл констрайнтов для этой платы. Даже не надо самому составлять. Правда сигналы тогда надо называть так, чтобы они совпадали с принятыми в документации. Кстати, в документации не нашел, а в схеме увидел, что на этой плате есть низкочастотный RC-генератор. Наверное, специально для динамической индикации.
а что именно?что то не догнал=((ой не заметил..ошибка не одна даже..вот:uldemir писал(а):Ну это вероятно значит, что в ВАШЕМ проекте нет такого порта. Поэтому лишние надо закомментировать, чтобы не ругалось.
Код: Выделить всё
NET "result<7>" LOC = "G1" ; # Bank = 3, Signal name = LD7
NET "result<6>" LOC = "P4" ; # Bank = 2, Signal name = LD6
NET "result<5>" LOC = "N4" ; # Bank = 2, Signal name = LD5
NET "result<4>" LOC = "N5" ; # Bank = 2, Signal name = LD4
NET "result<3>" LOC = "P6" ; # Bank = 2, Signal name = LD3
NET "result<2>" LOC = "P7" ; # Bank = 3, Signal name = LD2
NET "result<1>" LOC = "M11" ; # Bank = 2, Signal name = LD1
NET "result<0>" LOC = "M5" ; # Bank = 2, Signal name = LD0необходимо вводить на sw и выводить на семисегмент.uldemir писал(а):Ну это значит, что в верхнем уровне вашего проекта должны быть входы/выходы с такими названиями. В том модуле что я нарисрвал, есть только a<0:3>, b...., c.... и result<0:9>. Как видите, никаких sw, seg итп. так что надо решить, что и как делать. где вы хотите вводить параметны, где хотите выводить. Если хотите вывести result на светодиоды, тогда в ucf пишитеПравда, 8-й и 9-й разряд не знаю куда вывести - светодиоды кончились.Код: Выделить всё
NET "result<7>" LOC = "G1" ; # Bank = 3, Signal name = LD7 NET "result<6>" LOC = "P4" ; # Bank = 2, Signal name = LD6 NET "result<5>" LOC = "N4" ; # Bank = 2, Signal name = LD5 NET "result<4>" LOC = "N5" ; # Bank = 2, Signal name = LD4 NET "result<3>" LOC = "P6" ; # Bank = 2, Signal name = LD3 NET "result<2>" LOC = "P7" ; # Bank = 3, Signal name = LD2 NET "result<1>" LOC = "M11" ; # Bank = 2, Signal name = LD1 NET "result<0>" LOC = "M5" ; # Bank = 2, Signal name = LD0
на 4х sw задаем двоичный код цифр от 0 до 9 и чисел от 10 до 16(0000,0001,0010...и тд) и выводим на семисегмент именно двоичный код чисел о до 16..задейственны все четыре индикатора на семисегменте..uldemir писал(а):а что вы хотите ввести через свитчи? их только 8. В моём примере входов 12. А чтобы вывести на семисегмент... надо еще один модуль писать. который надо тактовать примерно от 500Гц. А где её взять... 25Мгц делить на 50000... а! можно сделать 16-ти разрядный счетчик.
совершенно верно..)uldemir писал(а):т.е на семисегментнике выводить только 1 или 0 в зависимости от состояния соответствующего переключателя?
а в ucf написать это:?uldemir писал(а):пфффффф.насчет последней строчки не уверен, что написал правильно,Код: Выделить всё
entity test is port ( mclk : in std_logic; - входные 25МГц или скока там. sw : in std_logic vector (3 downto 0); seg : out std_logic_vectar (6 downto 0); an : out std_logic_vectr (3 downto 0)) architecture behavioral is signal divider : std_logic_vector (17 downto 0); - для делителя 25мгц на 65536 16 разрядов и еще 2 старших разряда для динамической индикации signal data : std_logic; constant one : std_logic_vector := "1111001"; constant zero : std_logic_vector := "1000000"; begin process (mclk) begin if mclk'event and mclk='1' then divider <= divider+1; end if; end process; with divider(17 downto 16) select an <= (0=>'0', others=>'1') when "00", (1=>'0', others=>'1') when "01", (2=>'0', others=>'1') when "10", (3=>'0', others=>'1') when "11", (others=>'-') when others; with divider(17 downto 16) select data <= sw(0) when "00", sw(1) when "01", sw(2) when "10", sw(3) when "11", '-' when others; seg <= zero when data='0' else one; end behavioral;