1. Trang chủ
  2. » Kỹ Thuật - Công Nghệ

Thiết kế hệ thống xử lý ảnh video trên FPGA (CycloneII), chương 18 ppsx

11 182 0

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Chương 18: Kết hợp các chương trình Chương trình dòch: là chương trình kết hợp các chương trình chia tần số, chương trình đếm và chương trình đa hợp 3-8 decode để dòch led LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; USE IEEE.STD_LOGIC_ARITH.ALL; USE IEEE.STD_LOGIC_UNSIGNED.ALL; ENTITY dich IS PORT ( clock_25MHz : IN STD_LOGIC; A, B, C, D, E, F, G, H : OUT STD_LOGIC ); END dich; ARCHITECTURE xl OF dich IS SIGNAL Count :STD_LOGIC_VECTOR (3 DOWNTO 0 ); SIGNAL CLocK_1MHz,CLocK_100KHz,CLocK_10KHz,CLocK_1K Hz, CLocK_100Hz, CLocK_10Hz, CLocK_1Hz : STD_LOGIC; COMPONENT clk_div PORT (clock_25Mhz : IN STD_LOGIC; clock_1MHz : OUT STD_LOGIC; clock_100KHz : OUT STD_LOGIC; clock_10KHz : OUT STD_LOGIC; clock_1KHz : OUT STD_LOGIC; clock_100Hz : OUT STD_LOGIC; clock_10Hz : OUT STD_LOGIC; clock_1Hz : OUT STD_LOGIC); END COMPONENT; COMPONENT counter PORT (Clock : IN STD_LOGIC; Count : OUT STD_LOGIC_VECTOR (3 DOWNTO 0 )); END COMPONENT; COMPONENT dahop PORT (Ai : IN STD_LOGIC_VECTOR (2 DOWNTO 0); A, B, C, D, E, F, G, H : OUT STD_LOGIC); END COMPONENT ; BEGIN x1: clk_div PORT MAP (clock_25Mhz=>clock_25Mhz, clock_1MHz=>clock_1MHz, clock_100KHz=>clock_100KHz, clock_10KHz=>clock_10KHz, clock_1KHz=>clock_1KHz, clock_100Hz=>clock_100Hz,clock_10Hz=>clock_10 Hz, clock_1Hz=>clock_1Hz); x2: counter PORT MAP (clock=>clock_1Hz,Count=>Count); x3: dahop PORT MAP Ai=>count (2 DOWNTO 0), A=>A, B=>B, C=>C, D=>D,E=>E, F=>F, G=>G, H=>H); END; *Sau khi viết chương trình dòch led xong, ta phải thực hiện phần gán chân cho linh kiện, sau đó biên dòch lại chương trình rồi mới nạp chương trình vào chip EPM7128S trên KIT Tên tín hiệu Chân linh kiện EPM7128S clock_25MHz 83 A 6 B 9 C 11 D 15 E 17 F 20 G 22 H 24 II. Chửụng trỡnh ủeỏm tửứ 00 ủeỏn 99 (00000000 ủeỏn 10011001) treõn Led 7 ủoaùn: 1. Moõ hỡnh: 2. Chửụng trỡnh a. Chửụng trỡnh ủeỏm ủeỏn 9 LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; USE IEEE.STD_LOGIC_ARITH.ALL; USE IEEE.STD_LOGIC_UNSIGNED.ALL; ENTITY Counter IS PORT ( clock : IN STD_LOGIC; q : OUT STD_LOGIC_VECTOR (3 DOWNTO 0)); END Counter; ARCHITECTURE behavior OF Counter IS SIGNAL in_count : STD_LOGIC_VECTOR (3 DOWNTO 0); SIGNAL reset : STD_LOGIC; BEGIN PROCESS (Clock) BEGIN reset <= (in_count(1) NAND in_count(3)); IF reset = '0' THEN in_count <= "0000"; ELSIF (clock'EVENT AND clock ='1') THEN in_count <= in_count+1; END IF; q <= in_count; END PROCESS; END behavior; b. Chương trình giải mã led, với led có mức tác động ở mức 0. LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; USE IEEE.STD_LOGIC_ARITH.ALL; USE IEEE.STD_LOGIC_UNSIGNED.ALL; ENTITY dec_7seg IS PORT ( hex_digit : IN STD_LOGIC_VECTOR (3 DOWNTO 0); data : OUT STD_LOGIC_VECTOR (6 DOWNTO 0)); END dec_7seg; ARCHITECTURE a OF dec_7seg IS SIGNAL segment_data: STD_LOGIC_VECTOR (6 DOWNTO 0); BEGIN PROCESS (Hex_digit) BEGIN CASE hex_digit IS WHEN "0000" => segment_data <= "1111110"; soá 0 WHEN "0001" => segment_data <= "0110000"; soá 1 WHEN "0010" => segment_data <= "1101101"; soá 2 WHEN "0011" => segment_data <= "1111001"; soá 3 WHEN "0100" => segment_data <= "0110011"; soá 4 WHEN "0101" => segment_data <= "1011011"; soá 5 WHEN "0110" => segment_data <= "1011111"; soá 6 WHEN "0111" => segment_data <= "1110000"; số 7 WHEN "1000" => segment_data <= "1111111"; số 8 WHEN "1001" => segment_data <= "1111011"; số 9 WHEN "1010" => segment_data <= "1110111"; chữ A WHEN "1011" => segment_data <= "0011111"; chữ B WHEN "1100" => segment_data <= "1001110"; chữ C WHEN "1101" => segment_data <= "0111101"; chữ D WHEN "1110" => segment_data <= "1001111"; chữ E WHEN "1111" => segment_data <= "1000111"; chữ F WHEN OTHERS => segment_data <= "0111110"; END CASE; END PROCESS; data <= NOT segment_data; END a; c. Chương trình kết hợp (đếm led từ 00 đến 99): là chương trình kết hợp các chương trình đếm đến 9 và chương trình giải mã led, với led được tác động ở mức 0. LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; USE IEEE.STD_LOGIC_ARITH.ALL; USE IEEE.STD_LOGIC_UNSIGNED.ALL; ENTITY counterb IS PORT ( clock_25MHz : IN STD_LOGIC; Data1 : OUT STD_LOGIC_VECTOR (6 DOWNTO 0); Data2 : OUT STD_LOGIC_VECTOR (6 DOWNTO 0)); END counterb; ARCHITECTURE xuly OF counterb IS SIGNAL Count: STD_LOGIC_VECTOR (3 DOWNTO 0); SIGNAL clock_1MHz, clock _100KHz, clock _10KHz, clock _1KHz, clock _100Hz, clock _10Hz, clock _1Hz: STD_LOGIC; SIGNAL q, ql : STD_LOGIC_VECTOR (3 DOWNTO 0); SIGNAL clk_out: STD_LOGIC; COMPONENT clk_div PORT(clock_25Mhz : IN STD_LOGIC; clock_1MHz : OUT STD_LOGIC; clock_100KHz : OUT STD_LOGIC; clock_10KHz : OUT STD_LOGIC; clock_1KHz : OUT STD_LOGIC; clock_100Hz : OUT STD_LOGIC; clock_10Hz : OUT STD_LOGIC; clock_1Hz : OUT STD_LOGIC); END COMPONENT; COMPONENT counter PORT ( Clock : IN STD_LOGIC; q : OUT STD_LOGIC_VECTOR (3 DOWNTO 0)); END COMPONENT; COMPONENT counter1 PORT ( Clock : IN STD_LOGIC; q : OUT STD_LOGIC_VECTOR (3 DOWNTO 0)); END COMPONENT; COMPONENT dec_7seg PORT ( hex_digit : IN STD_LOGIC_VECTOR (3 DOWNTO 0); data : OUT STD_LOGIC_VECTOR (6 DOWNTO 0)); END COMPONENT; BEGIN x1: clk_div PORT MAP (clock_25Mhz=>clock_25Mhz, clock_1MHz=>clock_1MHz, clock_100KHz=>clock_10KHz, clock_10KHz=>clock_10KHz, clock_1KHz=>clock_1KHz, clock_100Hz=>clock_100Hz,clock_10Hz=>clock_10 Hz, clock_1Hz=>clock_1Hz); x2: counter PORT MAP (clock=>clock_1Hz,q=>q); clk_out <= q(3) NAND q(1) x3: dec_7seg PORT MAP (hex_digit=>q,data=>data1); x4: counter PORT MAP (clock=>clk_out,q=>ql); x5: dec_7seg PORT MAP (hex_digit=>ql,data=>data2); END; *Gaùn chaân cho linh kieän EPM7128S treân KIT Teân tín hieäu Chaân chip EPM7128S clock_25MHz 83 Data10 77 Data11 75 Data12 76 Data13 74 Data14 73 Data15 70 Data16 69 Data20 67 Data21 65 Data22 64 . Chương 18: Kết hợp các chương trình Chương trình dòch: là chương trình kết hợp các chương trình chia tần số, chương trình đếm và chương trình đa hợp 3-8 decode. PROCESS; data <= NOT segment_data; END a; c. Chương trình kết hợp (đếm led từ 00 đến 99): là chương trình kết hợp các chương trình đếm đến 9 và chương trình giải mã led, với led được tác động. H=>H); END; *Sau khi viết chương trình dòch led xong, ta phải thực hiện phần gán chân cho linh kiện, sau đó biên dòch lại chương trình rồi mới nạp chương trình vào chip EPM7128S trên KIT Tên tín hiệu

Ngày đăng: 05/07/2014, 16:20

Xem thêm: Thiết kế hệ thống xử lý ảnh video trên FPGA (CycloneII), chương 18 ppsx