TRƯỜNG ĐẠI HỌC BÁCH KHOA HÀ NỘI oOo VIỆN ĐIỆN BÁO CÁO MÔN HỌC FPGA Đề tài Thiết kế đồng hồ số Giảng viên hướng dẫn TS Nguyễn Đại Dương Nhóm 15 Hà Nội 72022 Contents LỜI NÓI ĐẦU 3 Phân công nghiệm vụ.aaaaaaaaaaaaaaaaaaaaaaaaaaaaa
TRƯỜNG ĐẠI HỌC BÁCH KHOA HÀ NỘI -oOo - VIỆN ĐIỆN BÁO CÁO MÔN HỌC FPGA Đề tài: Thiết kế đồng hồ số Giảng viên hướng dẫn: TS Nguyễn Đại Dương Nhóm 15: Hà Nội 7/2022 Contents LỜI NĨI ĐẦU Phân công nghiệm vụ I Tổng quan .5 Yêu cầu chức Yêu cầu phi chức II Cấu trúc phần cứng .5 2.1 Khối nguồn: 2.2 Khối xử lí : 2.3 Khối led III Thiết kế phần mềm thuật toán 3.1 Khối chống rung bàn phím 3.2 Khối chia tần số 10 3.3 Hiển thị led 12 3.4) Khối điều chỉnh tay 13 3.5) Khối chạy bình thường đếm theo dây 15 LỜI NĨI ĐẦU Ngày khoa học, cơng nghệ luôn biến chuyển không ngừng, làm cho trái đất đổi thay theo giây, phút Chính vậy, câu nói “ Thời gian vàng, bạc” trở nên đắn hết, thời gian gần thước đo thành công thời điểm Tuy khơng đong, đo thời gian, mà đếm xác đồng hồ đời sống mà nhóm chúng em chọn đề tài : “ Thiết kế đồng hồ báo điện tử “ Chính cần thiết đồng hồ ngôn ngữ mô tả phần cứng VHDL, chạy KIT EPM240 hãng Altera, để mô tả chức đồng hồ Tuy đề tài hồn thành, song việc gặp phải sai sót khơng thể tránh khỏi Rất mong nhận xét, đánh giá nhiệt tình thầy Chúng em xin chân thành cảm ơn !!! I Tổng quan Yêu cầu chức Thiết kế đồng hồ điện tử hiển thị 24h (từ 00:00 đến 23:59) Cho phép điều chỉnh thời gian ( phút ) thông qua switch,key Hiển thị kết LED Yêu cầu phi chức Mô tả thiết kế sử dụng ngôn ngữ mô tả phần cứng VHDL Thiết kế mô chạy với KIT EPPM 240 II Cấu trúc phần cứng 2.1 Khối nguồn: - Nguồn 5V DC lấy từ máy tính 2.2 Khối xử lí : Hình 1: Kit FPGA Epm240 V1 Kit sử dụng: EPM240T100C5N TQFP100 Đặc điểm: 240 logic elements, 192 Equivalent Macrocells Điện áp cung cấp: VDC Điện áp chân 3.3V 2.3 Khối led Hình 2: Led chung Anot Màu hiển thị: Màu đỏ Anốt chung Số chân: 10 chân Kích thước: 0.56 inch Điện áp: 2.2V Dịng tối đa chạy qua LED 25mA Trong tập bọn em sử dụng led anode chung để hiển thị phút giây III Thiết kế phần mềm thuật tốn Đồng hồ có chế độ hoạt đơng: Chạy bình thường điều chỉnh tay nút bấm - Chế độ chạy bình thường: đếm theo giây sau hiển thị LED để hiển thị giờ, phút, giây - Chế độ điều chỉnh tay: Mỗi lần nhấn phím bấm tăng lên đơn vị Gồm phím bấm giờ, phút Đồng hồ chạy bình thường gồm phần: Đếm thời gian tăng theo giây ( phần riêng ), chống rung bàn phím, chia tần, hiển thị led ( phần chung) Chỉnh thời gian tay: Khối điều chỉnh tay ( khối riêng), chống rung bàn phím, chia tần, hiển thị led ( phần chung) 3.1 Khối chống rung bàn phím - Mục đích: Khử rung bàn phím -Tóm tắt sơ qua code B1: Khỏi tạo entity B2: Tạo biến đếm biến trung gian Mục đích biến trung gian để xác định cịn khoảng thời rung phím hay khơng Nếu thời gian rung phím kết kết thúc bắt đầu đếm 10 chu kì clk ( chu kì clk= 1=ms ) B3: Bắt dầu đếm biến đếm Count_star nút bấm nhấn biến En_star =1 En_star=0 tức đếm xong B4: Bắt dầu đếm biến đếm Count_stop nút bấm nhả biến En_stop =1 En_stop =0 tức đếm xong 3.2 Khối chia tần số - Mục đích: Tạo tần số có chu kì 1ms, 1s phút -Tóm tắt sơ qua code B1: Khởi tạo enttity với clk đầu vào clk cuả EPM240 có giá trị 50MHz, chu kì clk đầu ms, s phút B2: Tạo biến đếm giá trị trung gian B3: Tạo Clk ms Do CLk với chu kì 1ms có tần số gấp 50000 giá trị tần số 50Mhz EPM240 Nên đảo với 25000 xung lên CLK EMP B4: Tương tự tạo giá CLK giây phút 3.3 Hiển thị led - Mục đích: Hiển thị giá trị đồng hồ LED -Tóm tắt sơ qua code B1: Khởi tạo entity Đầu vào số có giá trị từ đến Đầu giá trị 0,1 để điều chỉnh tắt bật LED B2: Tạo biến trung gian dạng std_logic_vector có bit B3: Gán bit biến trung gian vào đầu B4: Sử dụng When ELSE để gán giá trị cho biến trung gian tùy thuộc vào số đàu vào Giá trị gán dễ hàng tra google với led bọn em sử dụng LED Anot chung 3.4) Khối điều chỉnh tay - Mục đích: Điều chỉnh tăng giờ, phút nút nhấn nút nhấn để điều chỉnh phút( hàng chục hàng đơn vị ) nút để điều chỉnh -Tóm tắt sơ qua code B1: Nhúng component chống rung, hiển thị LED chia tần số Tạo biến đếm B2: Nếu nút nhấn M0( nút nhấn hàng đơn vị phút) nhấn Thì tăng phut lên số Nếu đến số 9( tức 10 tín hiệu signal) trở B3: Nếu nút nhấn M1 ( nút nhấn hàng chục phút) nhấn Thì lên tăng phút thêm Nếu đến giá trị trở B4: Nếu nút nhấn M2 ( nút nhấn giờ) nhấn Thì tăng hàng đơn vị thêm Khi hàng đơn vị =9 tăng hàng chục theem Reset hàng đơn vị Đến giá trị 23 cho B5: Gán giá trị biến đếm phần cho giá trị đếm biến chạy bình thường Phần bọn em trình bày qua Phần chi tiết code 3.5) Khối chạy bình thường đếm theo dây - Mục đích: Tạo khối đếm tăng lên giây sau hiển thị giờ, phút, giây LED - Tóm tắt qua code B1: Khởi tạo entity với dầu vào xung clk EPM đầu std_logic nhằm điều khiển LED B2: Nhúng khối chia CLK Hiển thị LED vào B3: Tạo biến đếm cho Giờ, phút, giây cho trang thái chạy bình thường Mỗi biến gồm biến trung gian đếm giá trị hàng chục hàng đơn vị Ở bọn em tạo biến đếm cho trạng thái Điều chỉnh tay nên nhìn rối B4: Biến đếm dơn vị giây tăng vào xườn lên xung CLK T=1s sau biến đếm đơn vị giây =9 ( thực 10 dạng signal) tăng biến đếm chục giây thêm đơn vị Tiếp tục so sánh giá trị giây với 59 Nếu 59 cho biến đếm chục đơn vị giây 0, biến đếm hàng đơn vị phút tằng lên Làm tương tự với biến đếm phút B5: Nếu trang thái Clocking ( chạy bình thương), gán giá trị giờ, phút, giây vào đầu vào Component hiển thị LED