0 / 0 / 0
Регистрация: 03.02.2018
Сообщений: 6
1

приемник последовательного порта

09.07.2018, 16:54. Показов 578. Ответов 1
Метки нет (Все метки)

как реализовывается приемник последовательного порта ????
и передатчик (= если не лень

на vhdl(предпочтительнее) или др
__________________
Помощь в написании контрольных, курсовых и дипломных работ здесь
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
09.07.2018, 16:54
Ответы с готовыми решениями:

Настройка последовательного порта
Добрый день. Возникла проблема с настройкой и, соответственно, использованием последовательного...

Программирование последовательного порта
Добрый день, камрады. Не знаю в верный ли подраздел форума я обращаюсь! Прошу строго не судить! Но...

Мониторинг последовательного порта
Добрый день коллеги, работаю сейчас над проектом, где надо мониторить все устройства,...

Программирование последовательного порта.
Здраствуйте. Помогите кто чем может в поиске литературы, исходников по программированию...

1
31 / 30 / 4
Регистрация: 22.03.2010
Сообщений: 126
18.07.2018, 15:42 2
Вот приемник. Рассчитан на входную частоту 57.6МГц. После успешного приема выставляет принятый байт на шину Data и формирует строб newByte.

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
----------------------------------------------------------------------------------
-- Company: 
-- Engineer: 
-- 
-- Create Date:    16:35:21 02/07/2017 
-- Design Name: 
-- Module Name:    RxAFAR - Behavioral 
-- Project Name: 
-- Target Devices: 
-- Tool versions: 
-- Description: 
--
-- Dependencies: 
--
-- Revision: 
-- Revision 0.01 - File Created
-- Additional Comments: 
--
----------------------------------------------------------------------------------
library IEEE;
use IEEE.STD_LOGIC_1164.ALL;
 
-- Uncomment the following library declaration if using
-- arithmetic functions with Signed or Unsigned values
use IEEE.NUMERIC_STD.ALL;
 
-- Uncomment the following library declaration if instantiating
-- any Xilinx primitives in this code.
--library UNISIM;
--use UNISIM.VComponents.all;
 
entity RxAFAR is
    Port ( Rx       : in   STD_LOGIC;
           Data     : out  STD_LOGIC_VECTOR (7 downto 0);
           clk      : in   STD_LOGIC;  -- Входная частота 57.6М
           Res      : in   STD_LOGIC;
           newByte  : out  STD_LOGIC);
end RxAFAR;
 
architecture Behavioral of RxAFAR is
 
  signal bData       : STD_LOGIC_VECTOR(7 downto 0);
  signal counter     : integer range 0 to 530;
  signal stop_count  : STD_LOGIC;
  signal startBitOK  : STD_LOGIC;
  signal stopBitOK   : STD_LOGIC;
  
  constant bit0      : integer :=  27;
  constant bit1      : integer := (27 + 1 * 55);
  constant bit2      : integer := (27 + 2 * 55);
  constant bit3      : integer := (27 + 3 * 55);
  constant bit4      : integer := (27 + 4 * 55);
  constant bit5      : integer := (27 + 5 * 55);
  constant bit6      : integer := (27 + 6 * 55);
  constant bit7      : integer := (27 + 7 * 55);
  constant bit8      : integer := (27 + 8 * 55);
  constant bit9      : integer := (27 + 9 * 55);
 
begin
 
 -- Как только на линии RX устанавливается низкий уровень, то 
 -- предполагаем, что это начало старт - бита и запускаем счетчик.
 -- Счетчик сбрасывается в 0 если есть команда остановки счета.
  process (Res, clk, stop_count)
  begin
    if Res = '1' then counter <= 0;
     elsif clk 'event and clk = '1' then
      if stop_count = '1' then counter <= 0;
      elsif counter = 0 and Rx = '0' then counter <= counter + 1;
      elsif counter > 0 then counter <= counter + 1;
    end if;
  end if;
  end process;
 
 
 -- Процесс, кроме всего прочего, формирует команду остановки счетчика при условии
 -- отсутствия приема старт бита и после приема последнего бита (стоп - бита).
  process (Res, clk, counter)
  begin
    if Res = '1' then bData          <= x"00";
                      startBitOK     <= '0';
                      stopBitOK      <= '0';
                      Data           <= x"00";
                      stop_count     <= '0';
    elsif clk 'event and clk = '1' then
      if counter = 0 then bData      <= x"00";
                          startBitOK <= '0';
                          stopBitOK  <= '0';
                          Data       <= x"00";
                          stop_count <= '0';
      elsif counter = bit0 and Rx = '0' then startBitOK <= '1';
      elsif counter = bit0 and Rx = '1' then stop_count <= '1';
             elsif (startBitOK = '1' and (counter = bit1 or 
                                          counter = bit2 or 
                                          counter = bit3 or 
                                          counter = bit4 or 
                                          counter = bit5 or 
                                          counter = bit6 or 
                                          counter = bit7 or 
                                          counter = bit8)) then bData <= bData(6 downto 0) & Rx;
             elsif (counter = bit9 and Rx = '1') then stopBitOK  <= '1';
                                                      stop_count <= '1';
                                                      Data       <= bData;
             elsif (counter = bit9 and Rx = '0') then stop_count <= '1';
                                                      Data       <= x"00";
      end if;
    end if;
  end process;
 
  newByte <= stopBitOK;
 
end Behavioral;

Будут вопросы по коду - задавайте.
1
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
18.07.2018, 15:42

Распределение данных с последовательного порта
Имеется такой код в VB6 Private Sub Command1_Click() MSComm1.CommPort = 2 MSComm1.Settings =...

Ищу снифер для последовательного порта
Имеется GSM модем, который подключён как виртуальный COMPort. Нужна прога для того, что бы...

Асинхронное чтение последовательного порта. MVVM
Здравствуйте уважаемые форумчане! Такая проблема. Писал код, для чтения com порта на c# form еще,...

Программирование кнопок с использованием последовательного порта
Здраствуйте! Мне нужно создать программу для контроля кнопок на геймпаде, используя...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2021, vBulletin Solutions, Inc.