vitali36 0 July 16, 2013 Posted July 16, 2013 · Report post Большое спасибо! сегодня буду пробовать все это доделать Share this post Link to post Share on other sites More sharing options...
vitali36 0 July 16, 2013 Posted July 16, 2013 · Report post Блок модуля управления порты: entity control_module is port( clk: in std_logic; rst: in std_logic; amp_cfg: in std_logic; adc_a: in std_logic_vector(13 downto 0); TX_VALID: out std_logic; RXD: out std_logic; DATA_IN: out std_logic_vector(7 downto 0) ); end control_module; Правильные указал или нет? Share this post Link to post Share on other sites More sharing options...
Александр77 1 July 17, 2013 Posted July 17, 2013 · Report post Блок модуля управления порты: ... Правильные указал или нет? Только частично угадывается назначение портов. Поподробнее бы. а то так неделю только выводы "утверждать" будете:) Share this post Link to post Share on other sites More sharing options...
vitali36 0 July 17, 2013 Posted July 17, 2013 (edited) · Report post Вообщем получил я что хотел) В com port toolkit передались данные. Но передал только старшие 8 бит ( data_in => adc_a (13 downto 6) ) Входу uart присвоил старшие биты выхода АЦП . Как лучше организовать, чтобы остальные 6 передать. Сдвиговый регистр? Edited July 17, 2013 by vitali36 Share this post Link to post Share on other sites More sharing options...
ZASADA 0 July 17, 2013 Posted July 17, 2013 · Report post Но передал только старшие 8 бит. Как лучше организовать, чтобы остальные 6 передать записать младшие 8 в один регистр, старшие 6 дополненные нулями- во второй. и передавать по очереди в рс 2 байта. Или допилить модуль рс для передачи сразу 2 байт. Share this post Link to post Share on other sites More sharing options...
Александр77 1 July 17, 2013 Posted July 17, 2013 · Report post ... Как лучше организовать, чтобы остальные 6 передать. Сдвиговый регистр? В управляющем модуле сделать так, что бы за период опроса АЦП, происходило два формирования имульса записи и начала передачи. По первому импульсу отсылаете старший байт, по второму - младшие 6 бит с дополнением нулями. А можно и поделить по 7 бит, при этом старший бит использовать как признак части. Например 1ххххххх - биты с 13 по 7, а 0ххххххх - с 6 по 0. Share this post Link to post Share on other sites More sharing options...
vitali36 0 July 17, 2013 Posted July 17, 2013 · Report post TX: UART port map ( clk => tclk, rst => trst, data_in => adc_a (13 downto 6), tx_valid => ttx_valid, txd => ttxd, tx_busy => ttx_busy ); А при привязке как указать что data_in нужны еще байты adc_a(5 downto 0)? Share this post Link to post Share on other sites More sharing options...
Александр77 1 July 17, 2013 Posted July 17, 2013 · Report post По хорошему в модуле должен быть таймер от которого запускается и АЦП и UART. Далее в процессе модуля описываете как реагировать на совпадение времени. Можно сделать как- то так: process(clk) variable unsigned cnt:(N downto 0) constant step:unsigned(N downto 0):="00....01"; constant max:unsigned(N downto 0):="xx....xx"; constant zero:unsigned(N downto 0):="00..000"; .... begin if(rising_edge(clk))then cnt:=cnt+step; if(cnt=max/2-20)then Data_in<=ADC_a(13 downto 6); elsif(cnt=max/2-10)then --запуск передачи передний фронт elsif(cnt=max/2)then --запуск передачи задний фронт elsif(cnt=max-10)then data_in<=adc_a(5 downto 0)&"00"; elsif(cnt=max-20)then --запуск передачи передний фронт --запуск АЦП передний фронт elsif(cnt=max-10)then --запуск передачи задний фронт --запуск АЦП задний фронт elsif(cnt=max)then cnt:=zero; end if; end if; end process; Share this post Link to post Share on other sites More sharing options...
vitali36 0 July 18, 2013 Posted July 18, 2013 (edited) · Report post Тему можно закрывать. Спасибо всем, кто помогал) Отдельное спасибо Александру и Zasada) Edited July 18, 2013 by vitali36 Share this post Link to post Share on other sites More sharing options...