

mixa7109
Участник-
Content Count
22 -
Joined
-
Last visited
Community Reputation
0 ОбычныйAbout mixa7109
-
Rank
Участник
-
mixa7109 started following Рисуем временную диаграмму, Не подключается STM32-E407, Не могу найти даташит на МК (STM32F407) and and 1 other
-
Я полный чайник в МК. Прикупил себе STM32-E407 и установил keil 5.24. Перед тем как суваться в keil. Я попытался прошить через Arduino по инструкции из даташита. Все было успешно. Потом, я пытался уже что-то сделать в keil. Для начало хотел просто убедиться, что keil видит плату, но увы. Я прочитал куча решений и ни одна мне не помогла. Устанавливал дрова из этой папки F:\Keil_v5\ARM\STLink\USBDriver. Все равно не видит. Поменял STLinkUSBDriver.dll, все равно никакого отклика. Диспетчер устройств находит его вот так. Назначал через программу Zadig драйвер WinUSB. Подключение платы выглядит следующим образом Мне кажется, что я уже все поломал и у меня куча драйвер уже установлено на компьютер. Запутался, что делать?
-
Накапливающий сумматор, введение латентности
mixa7109 replied to mixa7109's topic in Языки проектирования на ПЛИС (FPGA)
{cy0, sum_l0} <= sum_l0 + din_l; -- Здесь мы получаем наш перенос cy1 <= cy0; - вот так бы было через регистр sum_h1 <= sum_h1 + din_h0 + cy0; -- Здесь мы его уже используем sum_h1 <= sum_h1 + din_h0 + cy1; В этих двух строчках у нас нет регистра между cout и cin двух сумматоров. -
Накапливающий сумматор, введение латентности
mixa7109 replied to mixa7109's topic in Языки проектирования на ПЛИС (FPGA)
А что не так? -
Накапливающий сумматор, введение латентности
mixa7109 replied to mixa7109's topic in Языки проектирования на ПЛИС (FPGA)
Вообщем вот такая упрощенная схемы вышла у меня. Если кому-то интересна реализация этой схемы на vhdl пишите) -
Накапливающий сумматор, введение латентности
mixa7109 replied to mixa7109's topic in Языки проектирования на ПЛИС (FPGA)
Да, я попробую реализовать второй способ. Можете подробнее описать, как и что должно происходить? И представленный код относится к какому варианту? -
Накапливающий сумматор, введение латентности
mixa7109 replied to mixa7109's topic in Языки проектирования на ПЛИС (FPGA)
Я этот момент исправил, я когда построил rtl схему, увидел, что не так, а вот поправить в сообщении забыл. Вообщем, там так, как "должно быть так" -
Накапливающий сумматор, введение латентности
mixa7109 replied to mixa7109's topic in Языки проектирования на ПЛИС (FPGA)
Можно поподробнее про первый вариант? Пытался его реализовать, но на выходные получалось опять же не то , что надо -
Накапливающий сумматор, введение латентности
mixa7109 replied to mixa7109's topic in Языки проектирования на ПЛИС (FPGA)
Вот описал схему. n_reset_adder <= miStart and n_reset; add_sub1: lpm_add_sub generic map ( lpm_direction => "UNUSED", lpm_representation => data_type, lpm_width => WIDTH_RG ) port map ( clock => clk, clken => miValid, aclr => not n_reset_adder, add_sub => miType, dataa => data_reg, datab => wire_dataB(0), result => wire_out(0) ); process(clk, n_reset) begin if n_reset = '0' then elsif rising_edge(clk) then wire_dataB(0) <= data_reg; wire_dataB(2) <= wire_out(1); wire_dataB(2) <= wire_dataB(1); end if; end process; add_sub2: lpm_add_sub generic map ( lpm_direction => "UNUSED", lpm_representation => data_type, lpm_width => WIDTH_RG ) port map ( clock => clk, clken => miValid, aclr => not n_reset_adder, add_sub => miType, dataa => wire_out(0), datab => wire_dataB(2), result => wire_out(1) ); moData <= wire_out(1); data_reg(WIDTH_DATA - 1 downto 0) <= miData; Результат не сходится с ожиданием, что я не так делаю? А вот схема из квартуса -
Не могу найти даташит на МК (STM32F407)
mixa7109 posted a topic in Cредства разработки для МК
модуль TE-STM32F407 производства компании Терраэлектроника на основе 32-разрядного микроконтроллера STM32F407 от STMicroelectronics. С ядром Cortex-M4F. Супер старая, но необходимо с ней поработать, а найти информацию по ней не могу...есть у кого-нибудь в закромах информация по ней??? -
Добрый день всем. Создаю один проект на больших скоростях и мне там необходимо складывать и накапливать большие значения (разрядность вектора более 50). Естественно проседает быстродействие и необходимо ввести латентность на сумматоре (хотя бы 2). На вход сумматора подаётся значения, которые изменяют по линейному закону с каким-то произвольным коэффициентом. Например входные данные могут быть 1,2,3,4,5 и т.д. А на выходе соответственно получаем 1,3,6,10,15. Схема классическая: выход сумматора падает на вход регистра, а его выход на второй вход сумматора. Регистр может инициировать любым значением перед началом работы. Классический аккумулятор! Есть варианты по добавлению второго сумматора для параллельного счета, но пока не удается засунуть его так, чтобы все работало. У кого-нибудь есть мысли, как увеличить быстродействие??
-
Рисуем временную диаграмму
mixa7109 replied to serebr's topic in Работаем с ПЛИС, области применения, выбор
Только что в нем делал диаграммы, но хотелось бы мышкой быстро делать (как в timegen). -
Рисуем временную диаграмму
mixa7109 replied to serebr's topic in Работаем с ПЛИС, области применения, выбор
Привет. Не имею доступа к закромам, но очень нужен timegen. На просторах интернета не нашел ломанной версии. Можете на мыло скинуть? mixamixa99@yandex.ru -
Инициализация памяти в VHDL (Quartus - ModelSim)
mixa7109 replied to mixa7109's topic in Языки проектирования на ПЛИС (FPGA)
Вообщем, я решил. Все работает. Всем спасибо! Может кому-то спасу пару часов жизни..... Важно, работает только для фала формата .hex DATAWIDTH - задается в generic. library work; use work.Const_type.all; type memory is array (L - 1 downto 0) of std_logic_vector (DATAWIDTH - 1 downto 0); impure function init_mem_hex(FileName : in string) return memory is file data_init : TEXT; variable buf : line; variable mem_data : memory := (others => (others => '0')); variable datain : string(integer(DATAWIDTH / 4) downto 1); begin FILE_OPEN(data_init, FileName, READ_MODE); for i in 0 to L - 1 loop READLINE(data_init, buf); if (buf(buf'LOW) = ':') then shrink_line(buf, 9); READ(L=>buf, VALUE=>datain); mem_data(i) := CONV_STD_LOGIC_VECTOR(HEX_STR_TO_INT(datain), DATAWIDTH); end if; end loop; return mem_data; FILE_CLOSE(data_init); end function; -- signal ram_data : memory := init_mem_hex("./mem_init.hex"); ----------------------------------------------------------- А это файл пакета функций. ibrary ieee; use ieee.std_logic_1164.all; use ieee.std_logic_arith.all; use ieee.std_logic_unsigned.all; use std.textio.all; package Const_type is type my_signal_one is array(integer range<>) of std_logic; type my_vector_one is array(integer range<>) of std_logic_vector; type my_vector_sec is array(integer range<>, integer range<>) of std_logic_vector; procedure SHRINK_LINE (str_line : inout line; pos : in integer); function HEX_STR_TO_INT (str : in string) return integer; end package; package body Const_type is function HEX_STR_TO_INT (str : in string) return integer is variable len : integer := str'length; variable ivalue : integer := 0; variable digit : integer := 0; begin for i in len downto 1 loop case str(i) is when '0' => digit := 0; when '1' => digit := 1; when '2' => digit := 2; when '3' => digit := 3; when '4' => digit := 4; when '5' => digit := 5; when '6' => digit := 6; when '7' => digit := 7; when '8' => digit := 8; when '9' => digit := 9; when 'A' => digit := 10; when 'a' => digit := 10; when 'B' => digit := 11; when 'b' => digit := 11; when 'C' => digit := 12; when 'c' => digit := 12; when 'D' => digit := 13; when 'd' => digit := 13; when 'E' => digit := 14; when 'e' => digit := 14; when 'F' => digit := 15; when 'f' => digit := 15; when others => ASSERT FALSE REPORT "Illegal hex character "& str(i) & "! " SEVERITY ERROR; end case; ivalue := ivalue * 16 + digit; end loop; return ivalue; end HEX_STR_TO_INT; procedure SHRINK_LINE (str_line : inout line; pos : in integer) is subtype nstring is string(1 to pos); variable str : nstring; begin if (pos >= 1) then read(str_line, str); end if; end; end package body;