ch09b_bai1

6
BÁO CÁO BÀI TẬP NHÓM Môn: Công nghệ lập trình nhúng Giáo viên hướng dẫn: TS Lê Quang Minh Học viên thực hiện: 1. Lê Đình Quyến 2. Trần Thanh Tùng Lớp: CH09B – CNTT, Thái Nguyên 1. Giải thích code bài số 1: library IEEE; use IEEE.Std_Logic_1164.all; entity Conditional8to3Coder is port ( POSITION_CODE: in std_logic_vector (7 downto 0); BINARY_CODE : out std_logic_vector (2 downto 0) ); end Conditional8to3Coder; architecture CODERSTRUCT of Conditional8to3Coder is begin CODE: BINARY_CODE <= "000" WHEN (POSITION_CODE = "00000001") ELSE "001" WHEN (POSITION_CODE = "00000010") ELSE "010" WHEN (POSITION_CODE = "00000100") ELSE "011" WHEN (POSITION_CODE = "00001000") ELSE "100" WHEN (POSITION_CODE = "00010000") ELSE "101" WHEN (POSITION_CODE = "00100000") ELSE "110" WHEN (POSITION_CODE = "01000000") ELSE "111" WHEN (POSITION_CODE = "10000000") ELSE "XXX" ; end CODERSTRUCT;

Upload: ha-vui

Post on 18-Apr-2015

19 views

Category:

Documents


1 download

TRANSCRIPT

Page 1: CH09B_Bai1

BÁO CÁO BÀI TẬP NHÓMMôn: Công nghệ lập trình nhúng

Giáo viên hướng dẫn: TS Lê Quang MinhHọc viên thực hiện:

1. Lê Đình Quyến2. Trần Thanh Tùng

Lớp: CH09B – CNTT, Thái Nguyên

1. Giải thích code bài số 1:library IEEE;use IEEE.Std_Logic_1164.all;

entity Conditional8to3Coder isport ( POSITION_CODE: in std_logic_vector (7 downto 0); BINARY_CODE : out std_logic_vector (2 downto 0) );end Conditional8to3Coder;

architecture CODERSTRUCT of Conditional8to3Coder isbeginCODE:BINARY_CODE <= "000" WHEN (POSITION_CODE = "00000001") ELSE

"001" WHEN (POSITION_CODE = "00000010") ELSE"010" WHEN (POSITION_CODE = "00000100") ELSE"011" WHEN (POSITION_CODE = "00001000") ELSE"100" WHEN (POSITION_CODE = "00010000") ELSE"101" WHEN (POSITION_CODE = "00100000") ELSE"110" WHEN (POSITION_CODE = "01000000") ELSE"111" WHEN (POSITION_CODE = "10000000") ELSE"XXX" ;

end CODERSTRUCT;

Chương trình trên làm nhiệm vụ chuyển có điều kiện dãy 8 bit thành dãy 3 bit. Cụ thể như sau:

Trong trạng thái của 3 bit đầu ra có trạng thái không xác định XXX, do vậy phải sử dụng kiểu dữ liệu std_logic_vector (không thể sử dụng bit hoặc bit_vector vì chúng chỉ có 2 giá trị là 0 và 1), do std_logic_vector không được xác định trước nên phải khai báo thư viện IEEE, IEEE.Std_Logic_1164.all.

Page 2: CH09B_Bai1

Khai báo thực thể Conditional8to3Coder gồm 8 tín hiệu đầu vào và 3 tín hiệu đầu ra.. Phần thân cấu trúc sử dụng lệnh gán tín hiệu có điều kiện để chuyển dãy 8 bit thành dãy 3 bit.

2. Viết lại code tương đươngTương đương như code bài 1 là code bài 2 (sử dụng lệnh gán tín hiệu có lựa

chọn with ... select) và code bài 3 (dùng cấu trúc lựa chọn case .... is).Ngoài hai cách viết trên, bài 1 có thể viết bằng lệnh rẽ nhánh if ... then như

sau:library IEEE;use IEEE.Std_Logic_1164.all;

entity bai1 isport ( POSITION_CODE: in std_logic_vector (7 downto 0); BINARY_CODE : out std_logic_vector (2 downto 0) );end bai1;

architecture CODERSTRUCT of bai1 isbeginprocess(POSITION_CODE)beginif (POSITION_CODE = "00000001") then BINARY_CODE <= "000";elsif (POSITION_CODE = "00000010") then BINARY_CODE <= "001";elsif (POSITION_CODE = "00000100") then BINARY_CODE <= "010";elsif (POSITION_CODE = "00001000") then BINARY_CODE <= "011";elsif (POSITION_CODE = "00010000") then BINARY_CODE <= "100";elsif (POSITION_CODE = "00100000") then BINARY_CODE <= "101";elsif (POSITION_CODE = "01000000") then BINARY_CODE <= "110";elsif (POSITION_CODE = "10000000") then BINARY_CODE <= "111";else BINARY_CODE <= "XXX";

end if;end process;end architecture;

3. Chạy thử chương trình bằng Quartus II3.1. Chạy thử với device EPM7032SLC44-5 thuộc họ MAX7000S

Page 3: CH09B_Bai1

Kết quả biên dịch cho thấy chương trình sử dụng 15 chân trên tổng số 36 chân của chip, các chân được sử dụng được mô tả chi tiết trong Pin-Out file

Kết quả chạy thử cho thấy độ trễ thời gian là khoảng 5ns

Page 4: CH09B_Bai1

3.2. Chạy thử với device EP2S15F484I4 thuộc họ Stratix II

Kết quả biên dịch cho thấy chương trình sử dụng 11 chân trên tổng số 343 chân của chip, các chân được sử dụng được mô tả chi tiết trong Pin-Out file

Page 5: CH09B_Bai1

Kết quả chạy thử cho thấy độ trễ thời gian là khoảng 10ns

4. Ứng dụng của chương trình trong một số lĩnh vựcỨng dụng để điều khiển đèn giao thông, điều khiển thang máy tự động, ...