Bài giảng Thiết kế Logic số

Hiện nay, Hệ thống số đang là trung tâm của các hệ thống điện tử. Mọi phát triển hiện

nay đều dựa vào công nghệ số. Trang bị kiến thức và kỹ năng thiết kế hệ thống số là rất quan

trọng đối với kỹ sƣ điện tử. Các phƣơng thức nền tảng cho phát triển hệ thống số nhƣ sau:

+ Phát triển hệ thống số trên cở sở dùng rút gọn hàm logic, bảng trạng thái, máy trạng

thái dùng các cấu kiện logic chuẩn chức năng cố định nhƣ: Các cổng logic đơn giản, các mô-

đun mạch tổ hợp và tuần tự cơ bản.

+ Phát triển hệ thống số trên cơ sở dùng các hệ vi xử lý, vi điều khiển, bộ xử lý tín hiệu

số, và thực hiện ghép nối máy tính: Chức năng hệ thống chủ yếu đƣợc phát triển nhờ lập trình

phần mềm.

+ Phát triển hệ thống số trên cơ sở thiết kế logic số: Sử dụng ngôn ngữ mô tả phần cứng

HDL mô tả đƣợc hệ thống số cần thiết kế, thực hiện tổng hợp và thực hiện chúng trên các cấu

kiện logic khả trình PLD hay chuyển sang các mức thiết kế vật lý, layout và thực hiện trên các

vi mạch số VLSI. Đây là những tiền đề tốt cho thiết kế IC số và thiết kế hệ thống VLSI.

Cả ba hƣớng trên đều có thể đƣợc sử dụng để phát triển các hệ thống số nhƣng mức độ

đơn giản hay phức tạp là khác nhau và đều đƣợc đào tạo cho sinh viên ngành Điện – Điện tử

và Kỹ thuật Máy tính ở các môn học với các mức độ khác nhau. Trong môn học Thiết kế

logic số chủ yếu tập trung vào hƣớng thứ 3. Hƣớng phát triển này vừa phù hợp với môi trƣờng

giáo dục đại học và yêu cầu phát triển khả thi đƣợc các ứng dụng đa dạng trong thực tế với

mức độ phức tạp cao. Trong đó phƣơng pháp thiết kế trọng tâm mà sinh viên sử dụng để phát

triển các hệ thống số là Thiết kế logic dùng HDL, đây cũng là phƣơng pháp thiết kế đòi hỏi

sinh viên phải có kiến thức nền tảng tổng hợp tốt của cả hai hƣớng phát triển trên. Sử dụng

thiết kế logic cũng đòi hỏi sinh viên phải có hiểu biết sâu sắc về hoạt động của đối tƣợng

mình định thiết kế, và đặc biệt là phát huy đƣợc tính sáng tạo của sinh viên. Hơn thế nữa thiết

kế logic số dùng HDL hiện vẫn đang đƣợc giảng dạy phổ biến trong các Trƣờng đại học tiên

tiến trên thế giới và vẫn là phƣơng pháp thiết kế phổ biến của các phần mềm Thiết kế điện tử

hiện đại đang đƣợc sử dụng phổ biến cho các nhà Thiết kế của nhiều doanh nghiệp điện tử

trên thế giới.

pdf343 trang | Chia sẻ: tieuaka001 | Lượt xem: 726 | Lượt tải: 0download
Bạn đang xem trước 20 trang nội dung tài liệu Bài giảng Thiết kế Logic số, để xem tài liệu hoàn chỉnh bạn click vào nút DOWNLOAD ở trên
ên thực tế LED ma trận thƣờng đƣợc sử dụng làm LED quang báo, tuy nhiên trong tƣơng lai màn hình LED với độ phân giải cao sẽ là một xu hƣớng. Do ƣu điểm chính là tiết kiệm năng lƣợng. Sau đây là hình ảnh ma trận LED (8x8) hay sử dụng để ghép lại thành các ma trân lớn hơn. Hình 5.6 - Hình ảnh LED ma trân 8x8 Các tín hiệu điều khiển hàng đƣợc nối với Anode của tất cả các led trên cùng một hàng. Các tín hiệu điểu khiển cột cũng đƣợc nối với Cathode của tất cả các led trên cùng một cột. Khi có một tín hiệu điều khiển ở cột và hàng, các chân Anode của các led trên hàng tƣơng ứng đƣợc cấp điện áp cao, đồng thời các chân Cathode của các led trên cột tƣơng ứng đƣợc đƣợc cấp điện áp thấp .Tuy nhiên lúc đó chỉ có một số led trên 1 hàng hoặc 1 cột sáng, vì nó có đồng thời điện thế cao trên Anode và điện thế thấp trên Cathode. Nguyên lý quét: (Ví dụ hiển thị chữ K) Chương 5 – Thiết kế các hệ thống số ứng dụng dùng VHDL 228 + Đầu tiên ta sẽ cho tất cả các vị trí cột 1 sáng bằng cách nối đất cột 1 và nối nguồn vào tất cả các hàng. + Sau đó ta cho các vị trí hàng thứ 4 ở cột 2 sáng + Tiếp đó ta cho vị trí hàng thứ 3,5 của cột thứ 3 sáng: + Sau đó ta sẽ cho vị trí hàng thứ 2,6 của cột thứ 4 sáng: Chương 5 – Thiết kế các hệ thống số ứng dụng dùng VHDL 229 + Tƣơng tự ta cho vị trí hàng thứ 1,7 của cột thứ 5 sáng: + Và ta cho vị trí hàng thứ 8 của cột thứ 6 sáng: +Tƣơng tự ở các cột thứ 7,8 ta không cho sáng ở tất cả các vị trí. + Sau đó ta quay lại cho hiển thị ở cột 1,2,3,4,5.. cứ nhƣ vậy quá trình quẻt đƣợc quét liên tục các cột. Do hiện tƣợng lƣu ảnh trên võng mạc nên khi đó ta có cảm giác là liên tục. Chương 5 – Thiết kế các hệ thống số ứng dụng dùng VHDL 230 b, Xây dựng sơ đồ triển khai ứng dụng mạch điều khiển hiển thị ma trận LED Hình 5.7 Mạch điều khiển hiển thị ma trận LED Phân tích chức năng của các khối: + Bộ chia tần: Có tác dụng tạo ra 1 Clock có tần số f=1/T, với T là thời gian hiển thị 1 hiệu ứng. Đầu vào điều khiển là xung chuẩn của kit và đầu ra của bộ chia tần là 1 Clock và đƣợc đƣa vào để điều khiển . + Mode 8 : Đây là bộ đếm đến mode 8, hay chính là bộ đếm để điều khiển quét theo cột. + Khối nhớ 1 : Đây là ROM lƣu các giá trị để điều khiển cột. Đầu vào là các bit đầu ra của bộ đếm 8. Và các già trị của các bit này sẽ tƣơng ƣng với địa chỉ của giá trị xuất ra điều khiển cột. + Khối nhớ 2: Đây là nơi lƣu các gia tri để điều khiển hàng. Bộ chia tần Mode 8 Khối nhớ 2 Khối nhớ 1 Bộ đệm âm Bộ đệm dƣơng MA TRẬN LED Bộ chọn kênh CPLD/FPGA Clk Chương 5 – Thiết kế các hệ thống số ứng dụng dùng VHDL 231 c, Thực hiện thiết kế: Từ sơ đồ triển khai ở phần trên sử dụng phần mềm ISE để nhập thiết kế, thực hiện tổng hợp và nạp cấu hình cho CPLD trên KIT. Dùng ngôn ngữ mô tả phần cứng VDHL để nhập thiết kế. Bộ điều khiển Ma trận LED đƣợc môt tả trong thực tế có mô hình sau: d, Mô tả bằng VHDL -------------------------------------------------------------------------- library IEEE; use IEEE.STD_LOGIC_1164.ALL; entity matranled_2d is Port ( CLK : in STD_LOGIC; COLUM : out STD_LOGIC_VECTOR (7 downto 0); ROW : out STD_LOGIC_VECTOR (7 downto 0)); end matranled_2d; architecture Behavioral of matranled_2d is signal dem: integer range 0 to 125000:=0; signal count_mode8: std_logic_vector (2 downto 0):="000"; signal clk2khz: std_logic :='0'; signal temp : std_logic_vector(63 downto 0); constant a:std_logic_vector(63 downto 0):=X"FF0000E7E70000FF"; -- khoi nho 2 chinh la luu cac gia tri cua hang so begin ------chia tan-------------- -- xung chuan cua kit la 50Mhz -- ta dung bo dem de tao cac xung co tan so la 2khz process(clk) --xung 2Kz begin if clk='1' and clk'event then if dem = 12500 then dem <= 0; CLK COLUM ROW Chương 5 – Thiết kế các hệ thống số ứng dụng dùng VHDL 232 clk2khz <= not clk2khz; else dem <= dem +1; end if; end if; end process; -- bo dem mode 8 process(clk2khz) begin if clk2khz='1' and clk2khz'event then count_mode8 <= count_mode8 + 1; end if; end process; -- khoi nho 1 process(count_mode8) begin case count_mode8 is when "000" => colum<= "10000000"; when "001" => colum<= "01000000"; when "010" => colum<= "00100000"; when "011" => colum<= "00010000"; when "100" => colum<= "00001000"; when "101" => colum<= "00000100"; when "110" => colum<= "00000010"; when others => colum<= "00000001"; end case; end process; -- bo chon kenh row <= a(63 downto 56) when count_mode8 =x"0" else a(55 downto 48) when count_mode8 =x"1" else a(47 downto 40) when count_mode8 =x"2" else a(39 downto 32) when count_mode8 =x"3" else a(31 downto 24) when count_mode8 =x"4" else a(23 downto 16) when count_mode8 =x"5" else a(15 downto 8) when count_mode8 =x"6" else a(7downto 0); end Behavioral; Chương 5 – Thiết kế các hệ thống số ứng dụng dùng VHDL 233 5.1.3. Thiết kế ứng dụng điều hiển thị 8 led đơn sáng theo quy luật a/ Phân tích ứng dụng thiết kế Xuất phát bài toán điều khiển đèn trang trí ví dụ nhƣ điều khiển bộ đèn nháy, có thể thử nghiệm bài toàn này trên KIT phát triển CPLD nhƣ sau: Thiết kế cấu hình cho CPLD thành bộ điều khiển dãy 8 đèn led đơn sáng theo quy luật nào đó. Sơ đồ khối của ứng dụng nhƣ sau: Hình 5.8 - Sơ đồ khối ứng dụng 2 Trong sơ đồ trên: Chuyển mạch DIP-SW cho phép lựa chọn các chế độ làm việc khác nhau cho Bộ điều khiển. Bộ điều khiển sẽ tạo ra các tín hiệu điều khiển cơ cấu 8 LED sáng lần lƣợt tuần tự từ LED1 đên LED8, tạo ra chế độ sáng tuần tự. Chu kỳ sáng sẽ đƣợc lựa chọn bởi chuyển mạch DIP-SW, theo bảng sau: Chế độ S Chu kỳ sáng - T 1 0000 10 ms 2 0001 50 ms 3 0011 100 ms 4 0111 200 ms 5 1111 500 ms b/ Xây dựng sơ đồ triển khai ứng dụng Từ sơ đồ ứng dụng xây dựng sơ đồ triển khai thiết kế cho bộ điều khiển nhƣ hình 4.13.Theo sơ đồ từ tín hiệu CLK 10MHz đƣợc đƣa ra các bộ chia tần để tạo ra các tín hiệu xung chuẩn T1, T2, T3, T4, T5 có chu kỳ tƣơng ứng là: 10ms, 50ms, 100ms, 200ms, 500ms. Các xung này đƣợc đƣa qua bộ chọn kênh đƣợc điều khiển bởi đầu vào S, xung đƣợc chọn sẽ điều khiển bộ dịch vòng 8 bit để tạo tín hiệu K(8 1) dùng để điều khiển cho các LED đơn. c/ Thực hiện thiết kế Từ sơ đồ triển khai ở phần trên sử dụng phần mềm ISE để nhập thiết kế, thực hiện tổng hợp và nạp cấu hình cho CPLD trên KIT. Dùng ngôn ngữ mô tả phần cứng VDHL để nhập thiết kế. Bộ điều khiển có sơ đồ nguyên lý ở trên sẽ đƣợc mô tả trong thực thể "Controller" có mô hình nhƣ sau: 0 1 Chuyển mạch DIP-SW CPLD S(3 0) Bộ điều khiển LED8 ..... LED1 K(8 1) - điều khiển hiển thị cho từng LED tƣơng ứng CLK Chương 5 – Thiết kế các hệ thống số ứng dụng dùng VHDL 234 Hình 5.9 - Sơ đồ triển khai ứng dụng library IEEE; use IEEE.STD_LOGIC_1164.ALL; use IEEE.STD_LOGIC_ARITH.ALL; use IEEE.STD_LOGIC_UNSIGNED.ALL; use IEEE.STD_LOGIC_SIGNED.ALL; use IEEE.numeric_std.all; -- Uncomment the following lines to use the declarations that are -- provided for instantiating Xilinx primitive components. --library UNISIM; --use UNISIM.VComponents.all; entity Controller is Port ( S : in std_logic_vector(3 downto 0); CLK : in std_logic; K : out std_logic_vector(7 downto 0)); end Controller; architecture Behavioral of Controller is Controller S CLK K 4 8 Chia tần 1 CLK 10MHz Chia tần 2 T1 Chia tần 3 T2 Chia tần 4 T3 Chia tần 5 Chọn kênh S T4 T5 Bộ dịch vòng 8 bit K(8 1) CPLD Chương 5 – Thiết kế các hệ thống số ứng dụng dùng VHDL 235 constant hs1: std_logic_vector(16 downto 0):="11000011010011111"; -- Chia 100000 tao ra 10 ms constant hs2: std_logic_vector(2 downto 0):="100"; -- Chia 5 de tao ra 50 ms constant hs3: std_logic:='1'; -- Chia 2 de tao ra 100 ms constant hs4: std_logic:='1'; -- Chia 2 de tao ra 200 ms constant hs5: std_logic_vector(2 downto 0):="100"; -- Chia 5 de tao ra 500 ms signal chiatan1: std_logic_vector(16 downto 0):=(others=>'0'); signal chiatan2: std_logic_vector(2 downto 0):=(others=>'0'); signal chiatan3: std_logic:='1'; signal chiatan4: std_logic:='1'; signal chiatan5: std_logic_vector(2 downto 0):=(others=>'0'); signal T1,T2,T3,T4,T5,T : std_logic; -- Dau ra cac bo chia tan signal Q: std_logic_vector(2 downto 0):="000"; begin -- Chia tan 1 process (CLK) begin if CLK'event and CLK='1' then if chiatan1=hs1 then chiatan1'0'); T1<='1'; else chiatan1 <= chiatan1 +1; T1<='0'; end if; end if; end process; -- Chia tan 2 process (T1) begin if T1'event and T1='1' then if chiatan2=hs2 then chiatan2'0'); T2<='1'; else chiatan2 <= chiatan2 +1; T2<='0'; end if; end if; end process; -- Chia tan 3 process (T2) Chương 5 – Thiết kế các hệ thống số ứng dụng dùng VHDL 236 begin if T2'event and T2='1' then if chiatan3=hs3 then chiatan3<='0'; T3<='1'; else chiatan3 <= '1'; T3<='0'; end if; end if; end process; -- Chia tan 4 process (T3) begin if T3'event and T3='1' then if chiatan4=hs4 then chiatan4<='0'; T4<='1'; else chiatan4 <= '1'; T4<='0'; end if; end if; end process; -- Chia tan 5 process (T3) begin if T3'event and T3='1' then if chiatan5=hs5 then chiatan5'0'); T5<='1'; else chiatan5 <= chiatan5 +1; T5<='0'; end if; end if; end process; -- Thuc hien bo chon kenh with S select --abcdefgh T<=T1 when "0000", T2 when "0001", T3 when "0011", T4 when "0111", Chương 5 – Thiết kế các hệ thống số ứng dụng dùng VHDL 237 T5 when others; -- Dich vong 8 bit process(T) begin if T'event and T='1' then Q<=Q+1; end if; end process; with Q select K<= "11111110" when O"0", "11111101" when O"1", "11111011" when O"2", "11110111" when O"3", "11101111" when O"4", "11011111" when O"5", "10111111" when O"6", "01111111" when others; end Behavioral; 5.2 THIẾT KẾ BỘ ĐẾM THUẬT NGHỊCH THEO ĐIỀU KHIỂN a/ Phân tích ứng dụng thiết kế Xuất phát từ bài toán đếm số lƣợng khách hàng trong cửa hàng, thiết bị sẽ đƣợc đặt tại cửa ra vào, khi đó dùng 2 sensor: một sensor phát hiện có ngƣời đi vào, và một sensor phát hiện ngƣời đi ra, 2 sensor gửi tín hiệu điều khiển vào bộ đếm thuận nghịch, chỉ thị bộ đếm sẽ xác định số ngƣời trong cửa hàng. Để thực hiện ví dụ này trên bo mạch phát triển, 2 sensor sẽ đƣợc minh hoạ bằng 2 nút bấm UP và DOWN, chúng gửi tín hiệu điều khiển bộ đếm thuận nghịch, đƣợc thiết kế trong CPLD. Khi UP đƣợc bấm bộ đếm tăng lên 1 đơn vị, khi DOWN đƣợc bấm bộ đếm giảm đi một đơn vị. Sơ đồ khối của ứng dụng nhƣ hình vẽ 4.10. Hình 5.10 - Sơ đồ khối ứng dụng 1 b/ Xây dựng sơ đồ triển khai ứng dụng Vcc DOWN UP B1 B2 Tạo CLK 10MHz Bộ đếm thuận nghịch thập phân 2 digit CLK Chương 5 – Thiết kế các hệ thống số ứng dụng dùng VHDL 238 Hình 5.11 - Sơ đồ triển khai ứng dụng 1 Từ sơ đồ khối của ứng dụng xây dựng đƣợc sơ đồ triển khai của ứng dụng nhƣ hình vẽ 4.11. Phƣơng pháp thiết kế đƣợc sử dụng phƣơng pháp thiết kế mạch số đồng bộ. Trong đó khối "Bắt phím" xác định khi nào phím đƣợc bấm, mỗi lần bấm phím đầu ra Down hoặc Up sẽ cho ra môt xung dƣơng có độ rộng Tclk (Chu kỳ xung CLK), khối này cũng nhận xung CLK và xung T tấn số 10Hz vào để thƣc hiện các bƣớc định thời và chống nẩy nẩy phím. Khối này sẽ có sơ đồ nguyên lý nhƣ sau (chỉ minh họa quá trình bắt phím DOWN): Bộ đếm thập phân đồng bộ 2 digit, có kết quả đƣa ra là giá trị hàng chục "chuc" - 4 bit và giá trị hàng đơn vị "donvi" - 4 bit, chúng đƣợc đƣa qua khối "điều khiển cơ cấu chỉ thị số" để giải mã và điều khiển hiện thị kết quả bằng màn hình chỉ thị số dùng 2 LED 7 đoạn theo chế độ quét động. c/ Thực hiện thiết kế Từ sơ đồ triển khai ở phần trên sử dụng phần mềm ISE để nhập thiết kế, thực hiện tổng hợp và nạp cấu hình cho CPLD trên KIT. Dùng ngôn ngữ mô tả phần cứng VDHL để nhập thiết kế. Bộ đếm thuận nghịch có sơ đồ nguyên lý ở trên sẽ đƣợc mô tả trong thực thể "UpdownCounter" có mô hình nhƣ sau: use IEEE.STD_LOGIC_1164.ALL; D Q D Q D Q B1 T K1 K2 K3 DOWN CLK B1 B2 Bắt phím Bộ đếm thập phân UP Điều khiển cơ cấu chỉ thị số Chia tần CPLD abcdefgh AN1 AN2 chuc donvi CLK CLK T (10Hz) Down Up DOWN UpdownCounter B1 B2 CLK Seg (abcdefgh) AN(0) AN(1) Chương 5 – Thiết kế các hệ thống số ứng dụng dùng VHDL 239 use IEEE.STD_LOGIC_ARITH.ALL; use IEEE.STD_LOGIC_UNSIGNED.ALL; --- Khai bao thưc the entity UpDownCounter is Port ( B1: in std_logic; B2: in std_logic; CLK: in std_logic; Seg: out std_logic_vector(7 downto 0); AN: out std_logic_vector(1 downto 0)); end UpDownCounter; --- Mo ta hoat dong Cho thuc the architecture Behavioral of UpDownCounter is signal UP,DOWN,Mode,T: std_logic; signal K1,K2,K3: std_logic_vector(1 downto 0); signal donvi,chuc, Temp: std_logic_vector(3 downto 0); signal chiatan: std_logic_vector(14 downto 0); begin ---- Mo ta khoi Chia tan process (CLK) begin if CLK'event and CLK='1' then chiatan <= chiatan +1; end if; end process; T<=chiatan(14); ---- Mo ta khoi Bat phim process(T) begin if T'event and T='1' then K1<=(B2,B1); end if; end process; process(CLK) begin if CLK'event and CLK='1' then K2<=K1; K3<=K2; end if; end process; (UP,DOWN)<=not K2 and K3; ---- Mo ta Bo dem thap phan dong bo process (CLK) begin if CLK'event and CLK= '1' then if UP='1' then Chương 5 – Thiết kế các hệ thống số ứng dụng dùng VHDL 240 if donvi = X"9" then donvi<=X"0"; if chuc = X"9" then chuc<=X"0"; else chuc<=chuc+1; end if; else donvi<=donvi+1; end if; elsif DOWN='1' then if donvi = X"0" then donvi<=X"9"; if chuc = X"0" then chuc<=X"9"; else chuc<=chuc-1; end if; else donvi<=donvi-1; end if; end if; end if; end process; ---- Mo ta khoi Dieu khien hien co cau chi thi so with temp select --abcdefgh Seg<="00000011" when X"0", "10011111" when X"1", "00100101" when X"2", "00001101" when X"3", "10011001" when X"4", "01001001" when X"5", "01000001" when X"6", "00011111" when X"7", "00000001" when X"8", "00001001" when X"9", "11111101" when others; with T select temp<=donvi when '1', chuc when others; with T select AN<="01" when '1', "10" when others; end Behavioral; 5.3. THIẾT KẾ BỘ ĐẾM TẦN TỰ ĐỘNG THAY ĐỔI THANG ĐO a/ Phân tích ứng dụng thiết kế Trong thực tế phép đo tần số là một trong những phép đo lƣờng điện tử thông dụng. Trong đó phƣơng pháp đo dùng máy đếm tần đƣợc sử dụng chủ yếu. Phƣơng pháp đó này hoàn toàn có thể đƣợc thử nghiệm trên KIT phát triển CPLD. Với những mạch ứng dụng sẵn Chương 5 – Thiết kế các hệ thống số ứng dụng dùng VHDL 241 có trên KIT phát triển ta có thể thiết kế một bộ đếm tần số tự động thay đổi thang đo có sơ đồ tổng quát nhƣ sau: Hình 5.12 - Sơ đồ triển khai ứng dụng 3 Mạch vào sẽ có nhiệm vụ biến đổi tín hiệu vào thành dạng xung có mức logic CMOS và có cùng chu kỳ với tín hiệu vào. Dạng xung này đƣợc đƣa vào bộ đếm tấn để thực hiện đo tần số, kết quả sẽ đƣợc chỉ thị trên cơ cấu chỉ thị số LED 7 đoạn trên KIT phát triển. Kết quả sẽ đƣợc hiển thị dấu phảy động, ngoài ra còn có 3 đèn led để chỉ thị đơn vị đo tƣơng ứng. Do là thử nghiệm nên chúng tôi không thiết kế phần mạch vào và tạo dạo xung mà dùng ngay tín hiệu vào fx có dạng xung vuông, nên đƣợc đƣa thẳng vào Bộ đếm tần số. Tham số của bộ đếm tần phụ thuộc rất nhiều vào lƣợng tài nguyên của CPLD, sẽ đƣợc xác định sau khi thử nghiệm thiết kế, vì thiết kế sẽ đƣợc thực hiện với sử tối đa tài nguyên của CPLD. Dùng CPLD tần số lớn nhất có thể đƣợc không quá tần số làm việc của CPLD - khoảng hơn 100MHz, giới hạn tần số nhỏ nhất có thể đo đƣợc, với độ chính xác cao phụ thuộc vào lƣợng tài nguyên có trong CPLD. Phƣơng pháp đo này nói chung sai số lƣợng tử là không lớn, sai số lớn nhất chính là do hạn chế của cơ cấu chỉ thị số, chỉ hiển thị đƣợc 4 số. b/ Xây dựng sơ đồ triển khai ứng dụng Từ sơ đồ khối tổng quan trên, Bộ đếm tần có thể đƣợc thực hiện theo sơ đồ triển khai nhƣ hình 4.15. Trong sơ đồ trên tần số cần đo fx đƣợc đƣa vào bộ "Chuẩn hoá xung vào" tạo ra xung fx0 có cùng chu kỳ nhƣng có độ rộng xung bằng chu kỳ Tclk của xung CLK. Xung CLK vào có tần số 10MHz đƣợc đƣa qua "bộ chia tần số nhiều đầu ra", tạo ra các xung định thời T1, T2, T3, T4 có chu kỳ 1s; 100 ms, 10ms, 1ms. Các xung này đƣợc đƣa vào bộ chọn kênh để chọn xung định thời phù hợp với giải tần số tín hiệu đo vào. Xung định thời đƣợc lựa chọn Tch sẽ đƣa vào đề điều khiển "bộ đếm". Kết quả của của "bộ đếm" tỷ lệ với tần số cần đo. Kết quả này đƣợc đƣa qua "bộ điều khiển chỉ thị số" để giải mã và tạo ra xung điều khiển cơ cấu chỉ thị số, cho phép hiển thị kết quả là tần số xung cần đo. Giải đồ thời gian minh hoạ mối quan hệ của các tín hiệu vào bộ đếm nhƣ trong hình vẽ 4.16. Mạch vào và tạo dạng xung fx Bộ đếm tần số CPLD CLK Hz kHz MHz Chương 5 – Thiết kế các hệ thống số ứng dụng dùng VHDL 242 Hình 5.13 - Sơ đồ triển khai ứng dụng 3 Hình 5.14 - Giản đồ thời gian minh hoạ mối quan hệ xung chuẩn Tch và xung vào chuẩn. Quá trình đo hoàn toàn tự động chọn thang đo, chọn đơn vị chỉ thị phù hợp, máy đếm tần cũng có hiển thị thông báo nếu tần số vào quá nhỏ hoặc quá dải tần đo đƣợc. Quá trình điều khiển tự động trong bộ đếm tần đƣợc mô tả nhƣ trong lƣu đồ thuật toán ở hình 4.17. Chuẩn hoá xung vào fx Bộ đếm fx0 Bộ điều khiển chỉ thị số 8 4 3 Seg AN Unit Điều khiển chọn thang đo Chia tần nhiều đầu ra CLK CLK EN1 Chọn kênh T1 T2 T3 T4 Tch CPLD Tx T ch t t Tch f x0 Chương 5 – Thiết kế các hệ thống số ứng dụng dùng VHDL 243 Hình 4.17 - Lƣu đồ thuật toán điều khiển trong bộ đếm tần c/ Thực hiện thiết kế Từ sơ đồ triển khai ở phần trên sử dụng phần mềm ISE để nhập thiết kế, thực hiện tổng hợp và nạp cấu hình cho CPLD trên KIT. Dùng ngôn ngữ mô tả phần cứng VDHL để nhập thiết kế. Bộ điều khiển có sơ đồ nguyên lý ở trên sẽ đƣợc mô tả trong thực thể "FreqCounter" có mô hình nhƣ sau: library IEEE; use IEEE.STD_LOGIC_1164.ALL; use IEEE.STD_LOGIC_ARITH.ALL; use IEEE.STD_LOGIC_UNSIGNED.ALL; -- Uncomment the following lines to use the declarations that are -- provided for instantiating Xilinx primitive components. BEGIN Chọn thang mặc định Đếm tần Qúa thang Giảm thang đo Nghìn = 0 Hiển thị Kết thúc? END Đúng sai sai Đúng sai Tăng thang đo Đúng FreqCounter Fx CLK 8 Seg AN Unit 4 3 Chương 5 – Thiết kế các hệ thống số ứng dụng dùng VHDL 244 --library UNISIM; --use UNISIM.VComponents.all; entity auto_freq_counter is port( fx : in std_logic; clk: in std_logic; Seg : out std_logic_vector(6 downto 0); dot: out std_logic; AN : out std_logic_vector(2 downto 0); Unit : out std_logic_vector(2 downto 0)); end auto_freq_counter; architecture Behavioral of auto_freq_counter is signal donvi0: std_logic_vector(3 downto 0):="0000"; signal chuc0: std_logic_vector(3 downto 0):="0000"; signal tram0: std_logic_vector(3 downto 0):="0000"; signal donvi: std_logic_vector(3 downto 0):="0000"; signal chuc: std_logic_vector(3 downto 0):="0000"; signal tram: std_logic_vector(3 downto 0):="0000"; signal temp: std_logic_vector(3 downto 0):="0000"; signal scale: std_logic_vector(1 downto 0):="00"; signal over, over1: std_logic:='0'; signal chiatan: std_logic_vector(19 downto 0):=x"00000"; signal Tch :std_logic:='1'; signal fx1,fx2, fx3: std_logic; begin -- Chia tan tao xung mo cong - tu dong chon thang do process (clk) begin if clk='1' and clk'event then if(over1='0') then case scale is when "00" => if chiatan=x"F423F" then --clk=10MHz, T=0,1s. chiatan<=x"00000"; Tch<='1'; else chiatan<=chiatan+1; Tch<='0'; end if; when "01" => Chương 5 – Thiết kế các hệ thống số ứng dụng dùng VHDL 245 if chiatan=x"1869F" then --T=0,1ms; chiatan<=x"00000"; Tch<='1'; else chiatan<=chiatan+1; Tch<='0'; end if; when "10" => if chiatan=x"0270F" then --1us chiatan<=x"00000"; Tch<='1'; else chiatan<=chiatan+1; Tch<='0'; end if; when others => if chiatan=x"F423F" then chiatan<=x"00000"; Tch<='1'; else chiatan<=chiatan+1; Tch<='0'; end if; end case; else chiatan<=x"00000"; Tch<='1'; end if; end if; end process; -- Tao xung vao process(clk) begin if clk='1' and clk'event then fx1<=fx; fx2<=fx1; end if; end process; fx3<= fx1 and (not fx2); -- dong bo xung dem fx va clk -- counting process(clk) begin if clk='1' and clk'event then if over1='1' then over1<='0'; Chương 5 – Thiết kế các hệ thống số ứng dụng dùng VHDL 246 end if; if (Tch='1') then donvi<=x"0"; chuc<=x"0"; tram<=x"0"; if over='0' then donvi0<=donvi; chuc0<=chuc; tram0<=tram; --Decrease Scale; if tram=x"0" then if scale/="00" then scale<=scale-1; end if; end if; else donvi0<=x"A"; chuc0<=x"A"; tram0<=x"A"; over<='0'; end if; else if fx3='1' and over='0' then if donvi=x"9" then donvi<=x"0"; if chuc=x"9" then chuc<=x"0"; if tram=x"9" then -- over range if scale/="10" then scale<=scale+1; end if; over<='1'; over1<='1'; else tram<=tram+1; end if; else chuc<=chuc+1; end if; else donvi<=donvi+1; end if; end if; end if; end if; end process; --------------- Chương 5 – Thiết kế các hệ thống số ứng dụng dùng VHDL 247 -- Display Frequency process (chiatan(12 downto 11)) begin case chiatan(12 downto 11) is when "00" => AN<="001"; temp<=donvi0; if (scale="10") and (temp/=x"A") then dot<='0'; else dot<='1'; end if; when "01" => AN<="010"; temp<=chuc0; if scale="01" then dot<='0'; else dot<='1'; end if; when "10" => AN<="100"; temp<=tram0; if scale="00" then dot<='0'; else dot<='1'; end if; when others => dot<='1'; AN<="000"; end case; end process; ------------------------------- 11110100001000111111111 with temp Select -- abcdefgh Seg<="0000001" when x"0", "1001111" when X"1", "0010010" when x"2", "0000110" when X"3", "1001100" when X"4", "0100100" when X"5", "0100000" when X"6", "0001111" when X"7", "0000000" when X"8", "0000100" when X"9", "1111110" when X"A", Chương 5 – Thiết kế các hệ thống số ứng dụng dùng VHDL 248 "1111111" when others; end Behavioral; 5.4. THIẾT KẾ MẠCH GIAO TIẾP ĐIỀU KHIỂN VGA a. Giới thiệu chuẩn VGA VGA ( Video Graphíc array) là 1 chuẩn hiẻn thị ra đời từ những năm 1980 ở các thế hệ máy tính IBM PC. Ở thiết kế này chúng ta sẽ tạo ra khối giao tiếp VGA chuẩn 8 màu , độ phân giải 640x480 . Thiết kế tƣơng thích màn hình CRT hoặc LCD hỗ trợ chuẩn VGA. Các ký hoạ phác thảo một màn hình CRT đơn sắc đựoc thể hiện trên Hình 5.15 Hình 5.15 – Sơ đồ khối màn hình CRT Chương 5 – Thiết kế các hệ thống số ứng dụng dùng VHDL 249 Kết quả kết hợp mầu từ 3 mầu cơ bản nhƣ bảng sau: Các súng điện tử (cathode) tạo ra các tia điện tử tập trung, đi qua ống chân không và cuối cùng đập vào màn hình có phosphorescent tạo nên các điểm sáng trên màn hình. Cƣờng độ tia điện tử và độ sáng của điểm ảnh đƣợc xác định bằng mức điện áp của tín hiệu video mono. Mức điện áp của tín hiệu mono nằm trong khoảng từ 0 - 0.7v. Có 2 cuộn dây thẳng đứng và nằm ngang cuốn tạo ra từ trƣờng lái tia điện tử đến vị trí điểm sáng. Thông thƣờng các tia điện tử quét khắp màn hình từ trái sang phải và từ trên xuống dƣới. Bộ tạo dao động và bộ khuếch đại bên trong màn hình tạo ra dạng sóng răng cƣa để điều khiển 2 cuộn dây. Ví dụ khi tia điện tử quét từ cạnh bên trái màn hình sang cạnh bên phải màn hình là điện áp trên cuộn dây ngang tăng dần. Sau khi đến cạnh bên phải , tia điện tử nhanh chóng trở về cạnh bên trái khi điện áp trở về 0. Mối quan hệ giửa điện áp răng cƣa và vị trí quét đƣợc thể hiện trong hình dƣới. Chương 5 – Thiết kế các hệ thống số ứng dụng dùng VHDL 250 HÌnh 5.2.2- Đồ thị thời gian xung quét mành Hình 5.16 – Đ

Các file đính kèm theo tài liệu này:

  • pdfthiet_ke_logic_so_ptit_2986.pdf
Tài liệu liên quan