КУРСОВА РАБОТА
ПО
ТЕХНИЧЕСКО
ПРОЕКТИРАНЕ
СТУДЕНТ: ДЕАН ВАЛЕРИЕВ ДЕНЕВ Проверил:
ГРУПА: 29А /гл.ас.инж. Костадинов/
КУРС : ІІІ
НОМЕР: 083238
1. Задание
Вариант 6.
Да се проектира блок, състоящ се от брояч по модул 9 с паралелни входове и декодер, преобразуващ състоянието на брояча в 7-сегментен код.
а) чрез използване на описание на функционално ниво;
Таблици
ВХОДОВЕ ИЗХОДИ
Reset
|
Clk
|
D
|
Load
|
Q
|
1
|
X
|
X
|
0
|
0
|
0
|
X
|
D
|
1
|
D
|
0
|
↓
|
X
|
1
|
Q+1
|
ВХОДОВЕ ИЗХОДИ
Counter0
|
Counter1
|
Counter2
|
Counter3
|
.
|
g
|
f
|
e
|
d
|
c
|
b
|
a
|
0
|
0
|
0
|
0
|
1
|
1
|
0
|
0
|
0
|
0
|
0
|
0
|
0
|
0
|
0
|
1
|
1
|
1
|
1
|
1
|
1
|
0
|
0
|
1
|
0
|
0
|
1
|
0
|
1
|
0
|
1
|
0
|
0
|
1
|
0
|
0
|
0
|
0
|
1
|
1
|
1
|
0
|
1
|
1
|
0
|
0
|
0
|
0
|
0
|
1
|
0
|
0
|
1
|
0
|
0
|
1
|
1
|
0
|
0
|
1
|
0
|
1
|
0
|
1
|
1
|
0
|
0
|
1
|
0
|
0
|
1
|
0
|
0
|
1
|
1
|
0
|
1
|
0
|
0
|
0
|
0
|
0
|
1
|
0
|
0
|
1
|
1
|
1
|
1
|
1
|
1
|
1
|
1
|
0
|
0
|
0
|
1
|
0
|
0
|
0
|
1
|
0
|
0
|
0
|
0
|
0
|
0
|
0
|
1
|
0
|
0
|
1
|
1
|
0
|
0
|
1
|
0
|
0
|
0
|
0
|
VHDL ОПИСАНИЕ НА МОДУЛИТЕ Филтър
entity Filter is
Port ( FilterClk : in STD_LOGIC;
FilterIn : in STD_LOGIC;
FilterOut : out STD_LOGIC);
end Filter;
architecture Behavioral of Filter is
signal FilterCount : std_logic_vector(15 downto 0) := (others => '0');
signal FilterInPrev : std_logic := '1';
constant FILT_CONST : natural := 20000;
begin
process (FilterClk)
begin
if(FilterClk'event and FilterClk = '1') then
FilterInPrev <= FilterIn;
end if;
end process;
process (FilterClk, FilterIn)
begin
if(FilterClk'event and FilterClk = '1') then
if (FilterInPrev /= FilterIn) then
FilterCount <= (others => '0');
else
FilterCount <= FilterCount + 1;
if (FilterCount = FILT_CONST) then
FilterOut <= FilterIn;
end if;
end if;
end if;
end process;
end Behavioral;
Декодер-Брояч
library IEEE;
use IEEE.STD_LOGIC_1164.ALL;
use IEEE.STD_LOGIC_ARITH.ALL;
use IEEE.STD_LOGIC_UNSIGNED.ALL;
entity main is
Port (Reset : in STD_LOGIC;
Clk : in STD_LOGIC;
Load : in STD_LOGIC;
D : in STD_LOGIC_VECTOR (3 downto 0);
LIGHT : out STD_LOGIC_VECTOR (7 downto 0));
end main;
architecture Behavioral of main is
signal counter: STD_LOGIC_VECTOR ( 3 downto 0);
begin
COUNT:
process (Clk,Reset,Load)
begin
if Reset='0' then counter<="0000";
elsif (Load='0') then Counter<=D;
elsif(Clk'event and Clk='0') then
if counter="1001" then counter<="0000";
else Counter<=Counter+1;
end if;
end if;
end process COUNT;
DECODER:
process(counter)
begin
case counter is
when "0000"=>Light<="11000000";
when "0001"=>Light<="11111001";
when "0010"=>Light<="10100100";
when "0011"=>Light<="10110000";
when "0100"=>Light<="10011001";
when "0101"=>Light<="10010010";
when "0110"=>Light<="10000010";
when "0111"=>Light<="11111000";
when "1000"=>Light<="10000000";
when "1001"=>Light<="11000000";
when others=>Light<="10011110";
end case;
end process DECODER;
end Behavioral;
Схема на Модул+Филтър
Подаване на тестов набор ( 0 0 0 0)
tb : PROCESS
BEGIN
Clk <= '0';
wait for 20 ns;
Clk <= '1';
wait for 20 ns;
END PROCESS tb;
tb1 : PROCESS
BEGIN
Reset <= '0';
D <= "0000";
wait for 30 ns;
Load <= '1';
wait for 30 ns;
Reset <= '1';
wait;
END PROCESS tb1;
Съдържание на *.ucf файла.
NET "Clk" LOC = "P7" ;
NET "FilterClk" LOC = "P38";
NET "D<0>" LOC = "P142" ;
NET "D<1>" LOC = "P139" ;
NET "D<2>" LOC = "P137" ;
NET "D<3>" LOC = "P135" ;
NET "Light<0>" LOC = "P39" ;
NET "Light<1>" LOC = "P3" ;
NET "Light<2>" LOC = "P35" ;
NET "Light<3>" LOC = "P32" ;
NET "Light<4>" LOC = "P30" ;
NET "Light<5>" LOC = "P26" ;
NET "Light<6>" LOC = "P24" ;
NET "Light<7>" LOC = "P22" ;
NET "Reset" LOC = "P143" ;
NET "FilterClk" LOC = "P38";
NET "Load" LOC = "P5";
Резултат от сималуцията
1. Задание 2
2.Таблици 3
3.VHDL ОПИСАНИЕ НА МОДУЛИТЕ 4
3.1Филтър 4
3.2Декодер-Брояч 5
3.3Схема на Модул+Филтър 6
4.Подаване на тестов набор ( 0 0 0 0) 6
5.Съдържание на *.ucf файла. 7
6.Резултат от сималуцията 7
7>6>5>4>3>2>1>0>3>2>1>0>
Сподели с приятели: |