Professional Documents
Culture Documents
vn KTĐ&THCN 2 – K50
LỜI MỞ ĐẦU
FPGA (Field-programmable gate array), là một chip bán dẫn chứa các thành
phần logic khả trình gọi là các khối logic và mạng kết nối khả trình. Các khối logic có
thể lập trình để thực hiện các hàm logic cơ bản như AND, XOR, hoặc phức tạp hơn như
các bộ giải mã hay các hàm toán học đơn giản. Trong hầu hết các FPGA, các khối logic
thường bao gồm các phần tử nhớ, có thể là các Flip-Flop hoặc các khối memory.
FPGA đã xuất hiện từ rất lâu cùng cới các dòng vi xử lý khác, song một vài năm
gần đây nó được phát triển và sáng tạo như một cơn bão vào làng vi xử lý. Với các bài
toán mang tính phức tạp cao, cần độ chính xác cả về phần mềm và phần cứng thì FPGA
là một giải pháp thông minh. Chỉ cần một chip FPGA, ta có thể thiết kế vô số các chức
năng khác nhau, mỗi chức năng mang trong mình một nhiệm vụ khác nhau.
Để minh chứng cho điều này, em sẽ thiết kế một bộ chuyển đổi Analog – Digital
(ADC) 8-bits sử dụng chip FPGA. Vì phạm vi đề tài có hạn em chỉ ở mức mô phỏng.
Tương lai, đề tài này có thể phát triển lên như thêm module hiển thị kết quả bằng LED
7 thanh, … Đề tài được thực hiện bởi ngôn ngữ lập trình VHDL và phần mềm mô
phỏng Xilinx – ISE.
1
Trường đại học Bách khoa Hà Nội 13/11/2009
Nguyễn Ngọc Sơn http://www.ebook.edu.vn KTĐ&THCN 2 – K50
library IEEE ;
2
Trường đại học Bách khoa Hà Nội 13/11/2009
Nguyễn Ngọc Sơn http://www.ebook.edu.vn KTĐ&THCN 2 – K50
3
Trường đại học Bách khoa Hà Nội 13/11/2009
Nguyễn Ngọc Sơn http://www.ebook.edu.vn KTĐ&THCN 2 – K50
Trong đó: Vin là tín hiệu điện áp cần chuyển đổi (Input)
Vref là tín hiệu điện áp so sánh (Input)
Di là 8 bits số ra của bộ ADC i = 0,…,7 (Output)
Ta lấy Vref = 10 VDC làm điện áp so sánh. Với ADC 8 bits sẽ có 28 = 256 trạng
thái chạy từ 0000 0000 tới 1111 1111. Như vậy mỗi bước tính tương ứng là:
N = 10/(256 – 1)
4
Trường đại học Bách khoa Hà Nội 13/11/2009
Nguyễn Ngọc Sơn http://www.ebook.edu.vn KTĐ&THCN 2 – K50
entity adc1 is
port (analog_in : in integer range 0 to 15;
digital_out : out std_logic_vector(7 downto 0)
);
end adc1;
function ADC_8b_10v_bipolar (
analog_in: integer range 0 to +15
) return std_logic_vector is
constant max_abs_digital_value : integer := 256;
constant max_in_signal : integer := 10;
variable analog_signal: integer;
variable analog_abs: integer;
variable analog_limited: integer;
variable digitized_signal: integer;
variable digital_out: std_logic_vector(7 downto 0);
begin
analog_signal := integer(analog_in);
if (analog_signal < 0) then -- i/p = -ve
digitized_signal := integer(analog_signal * 256/10);
if (digitized_signal < -(max_abs_digital_value)) then
digitized_signal := -(max_abs_digital_value);
end if;
else -- i/p = +ve
digitized_signal := integer(analog_signal * 26);
if (digitized_signal > (max_abs_digital_value - 1)) then
digitized_signal := max_abs_digital_value - 1;
end if;
end if;
digital_out := std_logic_vector(to_signed(digitized_signal, digital_out'length));
return digital_out;
end ADC_8b_10v_bipolar;
begin
s0: instantly_digitized_signal <=
std_logic_vector (ADC_8b_10v_bipolar (analog_in));
5
Trường đại học Bách khoa Hà Nội 13/11/2009
Nguyễn Ngọc Sơn http://www.ebook.edu.vn KTĐ&THCN 2 – K50
end Behavioral;
6
Trường đại học Bách khoa Hà Nội 13/11/2009
Nguyễn Ngọc Sơn http://www.ebook.edu.vn KTĐ&THCN 2 – K50
7
Trường đại học Bách khoa Hà Nội 13/11/2009
Nguyễn Ngọc Sơn http://www.ebook.edu.vn KTĐ&THCN 2 – K50
Next:
Next:
8
Trường đại học Bách khoa Hà Nội 13/11/2009
Nguyễn Ngọc Sơn http://www.ebook.edu.vn KTĐ&THCN 2 – K50
Next:
Finish:
9
Trường đại học Bách khoa Hà Nội 13/11/2009
Nguyễn Ngọc Sơn http://www.ebook.edu.vn KTĐ&THCN 2 – K50
10
Trường đại học Bách khoa Hà Nội 13/11/2009
Nguyễn Ngọc Sơn http://www.ebook.edu.vn KTĐ&THCN 2 – K50
11
Trường đại học Bách khoa Hà Nội 13/11/2009
Nguyễn Ngọc Sơn http://www.ebook.edu.vn KTĐ&THCN 2 – K50
12
Trường đại học Bách khoa Hà Nội 13/11/2009
Nguyễn Ngọc Sơn http://www.ebook.edu.vn KTĐ&THCN 2 – K50
13
Trường đại học Bách khoa Hà Nội 13/11/2009
Nguyễn Ngọc Sơn http://www.ebook.edu.vn KTĐ&THCN 2 – K50
14
Trường đại học Bách khoa Hà Nội 13/11/2009
Nguyễn Ngọc Sơn http://www.ebook.edu.vn KTĐ&THCN 2 – K50
15
Trường đại học Bách khoa Hà Nội 13/11/2009
Nguyễn Ngọc Sơn http://www.ebook.edu.vn KTĐ&THCN 2 – K50
16
Trường đại học Bách khoa Hà Nội 13/11/2009
Nguyễn Ngọc Sơn http://www.ebook.edu.vn KTĐ&THCN 2 – K50
Chọn Yes ra màn hình hiển thị giá trị mô phỏng với Vin = 0 V, Di = 0000 0000
17
Trường đại học Bách khoa Hà Nội 13/11/2009
Nguyễn Ngọc Sơn http://www.ebook.edu.vn KTĐ&THCN 2 – K50
18
Trường đại học Bách khoa Hà Nội 13/11/2009
Nguyễn Ngọc Sơn http://www.ebook.edu.vn KTĐ&THCN 2 – K50
E – KẾT LUẬN.
Qua đề tài thiết kế ADC 8 bits sử dụng ngôn ngữ lập trình VHDL và phần mềm
mô phỏng Xilinx ISE ta thấy rõ được kết quả thật chính xác và nhanh chóng.
Điều này phù hợp với nhận xét lúc đầu rằng FPGA ngày càng phát triển, ngày
càng trở nên thuận tiện trong việc thiết kế mạch số với các ưu điểm vượt trội của nó.
Em xin chân thành cảm ơn thầy Lê Hải Sâm đã tận tình giúp đỡ em trong kỳ học
vừa qua, để em có được những kiến thức quý báu về FPGA, về VHDL. Một lần nữa em
xin chân thành cảm ơn thầy, chúc thầy luôn mạnh khoẻ, công tác tốt!
19
Trường đại học Bách khoa Hà Nội 13/11/2009