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

Страницы работы

3 страницы (Word-файл)

Содержание работы

Лабораторная работа №4

ПРОЕКТИРОВАНИЕ КОНТРОЛЛЕРА ПОСЛЕДОВАТЕЛЬНО ПОРТА

Цель работы. Получить практические навыки в проектировании интерфейсных модулей устройств на базе ПЛИС.

Задание:

Передатчик и приемник последовательного порта, количество разрядов – 7, контроль по нечетности, два стоповых бита, стандарт ввода-вывода - SSTL18_I .

Текстовое описание передатчика:

library IEEE;

use IEEE.STD_LOGIC_1164.ALL;

use IEEE.STD_LOGIC_ARITH.ALL;

use IEEE.STD_LOGIC_UNSIGNED.ALL;

---- Uncomment the following library declaration if instantiating

---- any Xilinx primitives in this code.

--library UNISIM;

--use UNISIM.VComponents.all;

entity Lab_4_1 is

    Port ( X : in  STD_LOGIC_VECTOR (6 downto 0);

                                               strob : in  STD_LOGIC;

           takt : in  STD_LOGIC;

           Y : out  STD_LOGIC);

end Lab_4_1;

architecture Behavioral of Lab_4_1 is

signal check: std_logic_vector(11 downto 0):="000000000000";

--signal tmp: std_logic:='0';

begin

process(strob,takt)

variable counter: integer:=0;

variable tmp: integer:=0;

begin

if strob='1' and strob'event and tmp=0 then

            check(0)<='1';

            check(7 downto 1)<= X;

            check(8)<=X(0) xor X(1) xor X(2) xor X(3) xor X(4) xor X(5) xor X(6);

            check(10 downto 9)<="11";

            check(11)<='0';

            tmp:=1;

else

            if takt='1' and takt'event and tmp=1 then

                        if counter<=11 then

                                   Y<=check(0);

                                   check(10 downto 0)<= check(11 downto 1);

                                   counter:=counter + 1;

                        else

                                   tmp:=0;

                        end if;

            end if;

end if;

end process;

end Behavioral;

Рисунок 1 – Работа передатчика

Описание приемника

library IEEE;

use IEEE.STD_LOGIC_1164.ALL;

use IEEE.STD_LOGIC_ARITH.ALL;

use IEEE.STD_LOGIC_UNSIGNED.ALL;

---- Uncomment the following library declaration if instantiating

---- any Xilinx primitives in this code.

--library UNISIM;

--use UNISIM.VComponents.all;

entity Lr_4_pr is

    Port ( Y : in  STD_LOGIC;

           takt : in  STD_LOGIC;

           X : out STD_LOGIC_VECTOR (6 downto 0):="0000000";

           gotov : out  STD_LOGIC;

           o_err : out  STD_LOGIC);

end Lr_4_pr;

architecture Behavioral of Lr_4_pr is

signal check: std_logic_vector(10 downto 0):="00000000000";

--signal tmp: std_logic:='0';

begin

process(takt)

variable counter: integer:=0;

variable rec: integer:=0;

begin

            if takt='1' then

                        if rec=0 and Y='1' then

                                   rec:=1;

                        else

                                   if rec=1 and counter<11 then

                                               check(counter)<=Y;

                                               counter:=counter + 1;

                                               if counter=11 then

                                                           if check(9)='1' and check(8)='1' and (check(7)=(check(0) xor check(1) xor check(2) xor check(3) xor check(4) xor check(5) xor check(6))) then

                                                                       o_err<='0';

                                                                       X <= check(9 downto 3);

                                                           else

                                                                       X <= check(9 downto 3);

                                                                       o_err<='1';

                                                           end if;

                                               end if;

                                   else

                                               rec:=0;

                                   end if;

                        end if;

            end if;

end process;

end Behavioral;

Рисунок 2 – Работа двоично-десятичного счетчика с предделителем

Вывод: получил практические навыки в проектировании интерфейсных модулей устройств на базе ПЛИС. Реализовал передатчик и приемник последовательного порта. Организовал передачу и прием 7 разрядных данных, с контролем по нечетности. Кадр также включает в себя стартовый и 2 стоповвых бита.

Похожие материалы

Информация о работе