THIẾT KẾ GIAO TIẾP PS2 VỚI BÀN PHÍM 5.4 THIẾT KẾ GIAO TIẾP TRUYỀN THÔNG UART 5.5 THIẾT KẾ BỘ TRUY NHẬP VỚI SDRAM NGOÀI... 5.1.3 THIẾT KẾ BỘ ĐẾM TẦN SỐ TỰ ĐỘNG THAY ĐỔI THANG ĐOYêu cầu:M
Trang 1BÀI GIẢNG MÔN
Trang 3NỘI DUNG CHÍNH CỦA CHƯƠNG
5.1 THIẾT KẾ ĐIỀU KHIỂN HIỂN THỊ LED, MA TRẬN LED, LED 7 ĐOẠN, VGA, LCD.
5.2 THIẾT KẾ MẠCH ĐIỀU KHIỂN MA TRẬN BÀN PHÍM
5.3 THIẾT KẾ GIAO TIẾP PS2 VỚI BÀN PHÍM
5.4 THIẾT KẾ GIAO TIẾP TRUYỀN THÔNG UART
5.5 THIẾT KẾ BỘ TRUY NHẬP VỚI SDRAM NGOÀI
Trang 5Nguyên lí quét :
+ Ban đầu LED 1 sẽ được hiển thị bằng cách cấp
nguồn cho LED1, và dữ liệu sẽ được đưa váo các
chân điều khiển của LED1
+ Sau đó lần lượt các LED2, LED3,LED4 được hiển
thị với dữ liệu tương ứng của tưng con LED 7
thanh trong rất nhiều chu kì.
+ Và cứ tiếp tục như vậy các LED được quét theo
thứ tự.
+ Do sự lưu ảnh trên võng mạc nên khi ta quan sát
gần như sáng liên tục
Trang 6www.ptit.edu.vn
Sơ đồ triển khai ứng dụng
Trang 7Yêu cầu viết VHDL gồm có các modul sau:
1 Khai báo các tín hiệu
2 Xây dựng bộ chia tần (tần số xung clk
Trang 8if(CLK_1M'event and CLK_1M='1') then
countmode4<=countmode4+1;
end if;
end process;
Trang 95.1.2 Thiết kế mạch điều khiển ma trận LED (8x8)
Trang 10www.ptit.edu.vn
Nguyên lý quét
Trang 12when "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;
5.1.2 (tt)
Trang 13row <= 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;
5.1.2 (tt)
Trang 14www.ptit.edu.vn
process(clk) xung 2Kz begin
if clk='1' and clk'event then
if dem = 12500 then
dem <= 0;
clk2khz <= not clk2khz; else
Trang 155.1.3 THIẾT KẾ BỘ ĐẾM TẦN SỐ TỰ ĐỘNG THAY ĐỔI THANG ĐO
Yêu cầu: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
Trang 16www.ptit.edu.vn
5.1.3 THIẾT KẾ BỘ ĐẾM TẦN SỐ TỰ ĐỘNG THAY ĐỔI THANG ĐO (tt)
Xây dựng sơ đồ triển khai cho yêu cầu 3.1.3
Trang 17Lưu đồ thuật toán
điều khiển trong
bộ đếm tần
5.1.3 (tt)
Trang 18www.ptit.edu.vn
5.1.3 (tt)
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;
Trang 19Tch<='0';
end if;
when others =>
if chiatan=x"F423F" then chiatan<=x"00000";
Tch<='1';
else chiatan<=chiatan+1;
chiatan<=x"00000";
Tch<='1';
else chiatan<=chiatan+1;
Trang 20if clk='1' and clk'event then fx1<=fx;
Trang 215.1.4 THIẾT KẾ MẠCH GIAO TIẾP ĐIỀU KHIỂN VGA
a Giới thiệu chuẩn VGA
Sơ đồ khối màn hình VGA
Trang 22www.ptit.edu.vn
5.1.4 THIẾT KẾ MẠCH GIAO TIẾP ĐIỀU KHIỂN VGA (tt)
Kết quả kết hợp màu từ 3 màu cơ bản như bảng
sau
Trang 235.1.4 THIẾT KẾ MẠCH GIAO TIẾP ĐIỀU KHIỂN VGA (tt)
Đồ thị thời gian xung quát mành
Trang 24www.ptit.edu.vn
5.1.4 THIẾT KẾ MẠCH GIAO TIẾP ĐIỀU KHIỂN VGA (tt)
Đồ thị thời gian điều khiển VGA
Trang 255.1.4 THIẾT KẾ MẠCH GIAO TIẾP ĐIỀU KHIỂN VGA (tt)
Các tín hiệu Hsync, Vsync kết nối với cổng VGA điều
khiển quét ngang,dọc màn hình
Thiết kế dựa trên 1 VGA 640x480 pixel ,tốc độ quét
mỗi pixel là 25MH
Trang 26www.ptit.edu.vn
5.1.4 THIẾT KẾ MẠCH GIAO TIẾP ĐIỀU KHIỂN VGA (tt)
pixel_x, pixel_y: Hai tín hiệu này cho biết vị trí tương đối của điểm ảnh
tín hiệu video_on dùng để kích hoạt hay vô hiệu hoá màn hình hiển thị
Mạch tạo pixel tạo
ra các tín hiệu tuơng ứng với các màu cơ bản
Trang 27Xây dựng thuật toán, code
Nếu tần số của thiết bị thực thi là 25MH, mạch đồng
chia tần xuống 25MHz Bộ chia tần này có thể chỉ đơn giản
là một bộ đếm mod2 Chúng ta tạo ra một tín hiệu Tick
25MHz để cho phép hoặc dừng bộ đếm, tín hiệu này cũng được kết nối với p_tick, đưa ra ngoài bộ VGA_sync để kết hợp với bộ tạo pixel.
5.1.4 THIẾT KẾ MẠCH GIAO TIẾP ĐIỀU KHIỂN VGA (tt)
Trang 28www.ptit.edu.vn
5.1.5 THIẾT KẾ MẠCH ĐIỀU KHIỂN HIỂN THỊ LCD
Sơ đồ khối mạch điều khiển LCD
Trang 295.1.5 THIẾT KẾ MẠCH ĐIỀU KHIỂN HIỂN THỊ LCD (tt)
Đồ hình trạng thái điều khiển LCD
Trang 315.1.5 THIẾT KẾ MẠCH ĐIỀU KHIỂN HIỂN THỊ LCD (tt)
Ký tự
LCD
Trang 32www.ptit.edu.vn
5.1.5 THIẾT KẾ MẠCH ĐIỀU KHIỂN HIỂN THỊ LCD (tt)
Mô hình tổng quát của
khối điều khiển
architecture Behavioral of LCD_Controller is 16 state FSM.
type StateType is (Pwr_Up, Pwr_Up_Delay, Off_Pwr_Up_Delay, Write_Data,Data_Setup_Delay, E_Pulse_Hi, E_Hi_Time, E_Pulse_Lo,Proc_Comp_Delay, Load_Next_Data, End_State, End_Pad_12,End_Pad_13, End_Pad_14, End_Pad_15, End_Pad_16 );
signal State, Next_State: statetype := Pwr_Up;
Instruction Counter.
signal Inst_Cnt: STD_LOGIC_VECTOR (3 downto 0) :=
"0000";
signal Inst_Cnt_E: STD_LOGIC;
signal Data_RS_Bus: STD_LOGIC_VECTOR(8 downto 0);
Trang 335.2 THIẾT KẾ MẠCH ĐIỀU KHIỂN MA TRẬN BÀN PHÍM
Ma trận bàn phím
Trang 355.2 (tt)
entity banphim4x4_vhdl is
Port ( clk : in STD_LOGIC;
colum : out STD_LOGIC_VECTOR (3 downto 0);
row : inout STD_LOGIC_VECTOR (3 downto 0):="0000";
button : out std_logic_vector (3 downto 0));
end banphim4x4_vhdl;
khoi chia tan:
bo dem mode 4 quet hang thu nhat: quet hang thu hai:
quet hang thu ba:
quet hang thu tu:
Trang 36www.ptit.edu.vn
process(CLK) quet hang thu nhat:
begin
if clk'event and clk='1' and row(0)='0' then
if (colum="1110") then button0<= x"0";
elsif (colum="1101") then button0<= x"1";
elsif (colum="1011") then button0<= x"2";
elsif (colum="0111") then button0<= x"3";
if clk'event and clk='1' and row(1)='0' then
if (colum="1110") then button1<= x"4";
elsif (colum="1101") then button1<= x"5";
elsif (colum="1011") then button1<= x"6";
elsif (colum="0111") then button1<= x"7";
Trang 375.3 THIẾT KẾ GIAO TIẾP PS2 VỚI BÀN PHÍM
Sơ đồ khối mạch giao tiếp ps2
Trang 38www.ptit.edu.vn
5.3 THIẾT KẾ GIAO TIẾP PS2 VỚI BÀN PHÍM (tt)
Cấu trúc dữ liệu truyền qua PS2
Mã bàn phím
Trang 39Entity PS2Rx is
Port ( clk,reset:in std_logic;
ps2d,ps2c:in std_logic; keydata,keyclock rx_en:in std_logic;
rx_done_tick : out std_logic;
dout: out std_logic_vector(7 downto 0)
);
End PS2Rx;
Architecture arch of PS2Rx is
Constant BRK: std_logic_vector(7 downto 0):=x"F0";
Type statetype is(idle,dps,load);
signal state_reg,state_next: statetype;
signal filter_reg,filter_next:std_logic_vector(7 downto 0);
signal f_ps2c_reg,f_ps2c_next:std_logic;
signal n_reg,n_next:unsigned(3 downto 0);
signal fall_edge:std_logic;
signal b_reg,b_next:std_logic_vector(10 downto 0);
5.3 THIẾT KẾ GIAO TIẾP PS2 VỚI BÀN PHÍM (tt)
Bấm vào đây
để xem toàn
bộ chương trình VHDL
Trang 40www.ptit.edu.vn
5.4 THIẾT KẾ BỘ ĐIỀU KIỂN TRUYỀN THÔNG NỐI TIẾP UART
UART (universal asynchronous receiver and transmitter) là một giao thức truyền thông nối tiếp bất đồng bộ
Sơ đồ khối bộ nhận dữ liệu UART
Trang 41- Khối baud rate generator: Tạo điểm đánh dấu lấy
mẫu ( sample ticks).
- Khối receiver : Nhận dữ liệu , chuyển thành các bít
song song
- Interface circuit : cung cấp bộ đệm FIFO, giao tiếp
với hệ thống.
5.4 THIẾT KẾ BỘ ĐIỀU KIỂN TRUYỀN THÔNG NỐI TIẾP UART (tt)
Trong thiết kế này tốc độ truyền nối tiếp baud rate = 19200 do đó tốc độ lấy mẫu = 19200x16=307200 ticks/ second Thiết kế thực hiện trên kit Spartan 3AN của xilinx, có clock system = 50Mhz ,do đó cần có bộ đếm mod (50.000.000/ 307200) = 163
Trang 435.5 THIẾT KẾ BỘ TRUY NHẬP VỚI SDRAM NGOÀI