Tải bản đầy đủ (.pdf) (18 trang)

Thiết kế đồng hồ số triển khai trên Kit DE270

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (1001.25 KB, 18 trang )

BTL Thiết kế tổng hợp IC số - TS. Nguyễn Hoàng Dũng


1

TRƯỜNG ĐẠI HỌC BÁCH KHOA HÀ NỘI
VIỆN ĐIỆN TỬ - VIỄN THÔNG



Bài Tập Lớn
THIẾT KẾ, TỔNG HỢP IC SỐ VÀ HỆ THỐNG SỐ
Đề tài :
THIẾT KẾ ĐỒNG HỒ BÁO GIỜ ĐIỆN TỬ



SVTH : Phan Đình Điệp – 20111440
Nguyễn Văn Bằng – 2011xxxx
Mai Văn Quân – 2011xxxx

GVHD : TS. Nguyễn Hoàng Dũng



Hà Nội, 11- 2014

BTL Thiết kế tổng hợp IC số - TS. Nguyễn Hoàng Dũng


2


MỤC LỤC
DANH MỤC HÌNH VẼ 3
DANH MỤC BẢNG BIỂU 3
LỜI NÓI ĐẦU 4
PHẦN A. MÔ TẢ CHI TIẾT THIẾT KẾ 5
I. TỔNG QUAN 5
1. Yêu cầu chức năng 5
2. Yêu cầu phi chức năng 5
II. SƠ ĐỒ KHỐI 5
1. Sơ đồ tổng quát 5
2. Sơ đồ chi tiết mạch 6
III. THIẾT KẾ CHI TIẾT TỪNG KHỐI 7
1. Khối module chính 7
2. Khối chia tần số clk_div 9
3. Khối LCD 10
4. Khối thiết lập đồng hồ setclock 12
5. Khối chuyển đổi bit convert10 14
6. Khối giải mã decoder_bcd 15
PHẦN B. MÔ PHỎNG VÀ THỰC TẾ 17
PHẦN C. KẾT LUẬN 17








BTL Thiết kế tổng hợp IC số - TS. Nguyễn Hoàng Dũng



3
DANH MỤC HÌNH VẼ
Figure 1. Sơ đồ tổng quát đồng hồ điện tử. 5
Figure 2. Sơ đồ RTL viewer 6
Figure 3. Khối chia tần clk_div:DIV 9
Figure 4. Bảng mã kí tự hiển thị LCD 11
Figure 5. Sơ đồ khối LCD 12
Figure 6. Khối thiết lập đồng hồ setclock:SC 12
Figure 7. Khối chuyển đổi convert10 14
Figure 8. Sơ đồ khối khối giải mã decoder 15




DANH MỤC BẢNG BIỂU
Table 1. Module chính của chương trình 7
Table 2. Module chia tần clk_div 9
Table 3. Bảng mã nhị phân 13
Table 4. Module thiết lập đồng hồ setclock 13
Table 5. Module convert10 14
Table 6. Bảng giải mã decoder sang LED 7 thanh 15
Table 7. Module giải mã BCD 15










BTL Thiết kế tổng hợp IC số - TS. Nguyễn Hoàng Dũng


4
LỜI NÓI ĐẦU
Ngày nay khi khoa học, công nghệ luôn luôn biến chuyển không ngừng, làm
cho trái đất đang đổi thay theo từng giây, từng phút. Chính bởi vậy, câu nói “ Thời
gian là vàng, là bạc” càng trở nên đúng đắn hơn bao giờ hết, thời gian gần như là
thước đo của sự thành công ở thời điểm hiện tại. Tuy vậy không ai có thế đong, đo
được thời gian, mà nó chỉ có thể được đếm chính xác bằng những chiếc đồng hồ.
Chính bởi sự cần thiết của chiếc đồng hồ trong đời sống mà nhóm chúng em
đã chọn đề tài : “ Thiết kế đồng hồ báo giờ điện tử “ bằng ngôn ngữ mô tả phần
cứng Verilog HDL, chạy trên KIT DE2-70 của hãng Altera, để mô tả chức năng
chính của đồng hồ.
Tuy đề tài đã hoàn thành, song việc gặp phải những sai sót là không thể tránh
khỏi. Rất mong được sự nhận xét, đánh giá nhiệt tình của thầy. Chúng em xin chân
thành cảm ơn !!!
Nhóm Sinh Viên

Phan Đình Điệp
Nguyễn Văng Bằng
Mai Văn Quân













BTL Thiết kế tổng hợp IC số - TS. Nguyễn Hoàng Dũng


5
PHẦN A. MÔ TẢ CHI TIẾT THIẾT KẾ
I. TỔNG QUAN
1. Yêu cầu chức năng
o Thiết kế đồng hồ điện tử hiển thị 24h (từ 00:00:00 đến 23:59:59) chạy trên
KIT DE2-70 của hãng Altera.
o Cho phép điều chỉnh thời gian ( giờ và phút ) thông qua các switch ( từ
SW17-SW2 )
o Hiển thị kết quả ra 6 LED 7 thanh.
o Mạch có chức năng báo giờ theo thời gian định trước, hiển thị trên LEDG.
o Có nút reset ( phím KEY ) đưa về 00:00:00 và enable ( SW1) cho phép thiết
lập thời gian.
2. Yêu cầu phi chức năng
o Mô tả thiết kế sử dụng ngôn ngữ mô tả phần cứng Verilog HDL.
o Thiết kế và mô phỏng hoặc chạy được trên KIT.
o Hoàn thành đề tài trước ngày 17/11/2014.

II. SƠ ĐỒ KHỐI
1. Sơ đồ tổng quát

Figure 1. Sơ đồ tổng quát đồng hồ điện tử.


o Phân tích chi tiết từng khối
+ Khối đầu vào : Bao gồm các đầu vào như tần số vào, reset, enable,…
+ Khối đồng hồ điện tử : Thiết lập cho đồng hồ chạy bình thường, báo giờ,…
+ Khối LCD : Hiển thị tên bài tập lớn (BTL), tên đề tài, tên thành viên nhóm.
BTL Thiết kế tổng hợp IC số - TS. Nguyễn Hoàng Dũng


6
+ Khối hiển thị LED : Hiện thị ra giờ, phút, giây, và những thông báo ra
LEDR, LEDG.

2. Sơ đồ chi tiết mạch


Figure 2. Sơ đồ RTL viewer

Mô tả chức năng từng khối :
o Khối chia tần clk_div : Có nhiệm vụ chia tần số đầu vào từ 50MHz xuống
tần số 1Hz.
o Khối LCD : Có nhiệm vụ hiển thị lên thông tin đã được thiết lập sẵn về BTL,
tên đề tài, tên thành viên nhóm.
o Khối setclock : Tiếp nhận các đầu vào, thiết lập bộ đếm và cho phép xuất ra
led báo hiệu và đầu ra 6bit của giờ, phút giây.
o Khối covert10 : Bao gồm 3 khối có nhiệm vụ chuyển đổi bit từ 2 bit sang 10
bit.
o Khối decoder_bcd : giải mã ra mã hexa để hiển thị ra giờ, phút, giây trên
LED 7 thanh.



BTL Thiết kế tổng hợp IC số - TS. Nguyễn Hoàng Dũng


7
III. THIẾT KẾ CHI TIẾT TỪNG KHỐI
1. Khối module chính
o Khai báo tên mô-đun, các đầu vào, đầu ra.
o Đầu vào : 17 switch. Trong đó iSW[17:2] điều chỉnh thời gian hiển thị giờ,
phút, giây; sau khi điều chỉnh thời gian, ta gạt iSW[1], switch này cho phép
thiết lập được thực hiện.
o Đầu ra : 16 LED đỏ được gán tương ứng với các iSW; 2 LED xanh dùng để
báo lỗi, và báo đến giờ hẹn trước ( 6h, 12h, 18h ) và 6 LED 7 thanh hiển thị
thời gian.
o Các dây ( wire ) kết nối các module con.
o Kết nối phân cấp theo 2 cách : Kết nối cổng có tên và kết nối cổng theo thứ
tự. Bao gồm :
+ Khối clk_div
+ Khối setclock
+ 3 khối convert10
+ 6 khối decoder_bcd
+ Khối lcd

Table 1. Module chính của chương trình
BTL Thiết kế tổng hợp IC số - TS. Nguyễn Hoàng Dũng


8
/*
Thiet ke mot dong ho dien tu :
+ Do chuong (sang led) theo thoi gian dinh truoc :6h,12h,18h

+ Hien thi gio, phut, giay ra led 7 thanh : oHEX_D tu 7-2
+ Thiet lap duoc thoi gian thong qua cac iSW17-2
*/
// Module chinh //
module dongho_baogio
( iSW,iCLK_50,iKEY,
oLEDR,oLEDG,
oHEX7_D,oHEX6_D,oHEX5_D,
oHEX4_D,oHEX3_D,oHEX2_D,
LCD_D, oLCD_RW, oLCD_EN, oLCD_RS,
oLCD_ON, oLCD_BLON);
input [17:1] iSW; // iSW[1]-cho phep dieu chinh thoi gian iSW[17:10]-dieu
chinh gio iSW[9:2]-dieu chinh phut
input iCLK_50,iKEY; // iCLK_50- tin hieu vao 50MHz // iKEY - reset

output [17:2] oLEDR; // LED do
output [1:0] oLEDG; // LED xanh- bao loi - bao den gio hen

output [0:6] oHEX7_D,oHEX6_D,oHEX5_D,
oHEX4_D,oHEX3_D,oHEX2_D; // LED 7 thanh

output [7:0] LCD_D;
output oLCD_RW,oLCD_EN,oLCD_RS, oLCD_ON,oLCD_BLON;
// hien thi LCD

assign oLEDR = iSW; // gan LED do = iSW
wire clk; // clk 1Hz
wire [5:0] gio, phut, giay ;
wire [3:0] phut_ch,
phut_dv,

gio_ch,
gio_dv,
giay_dv,
giay_ch;

//Khoi chiatan
clk_div DIV ( .clk_50m(iCLK_50),.reset(iKEY),.clk(clk) );
//Khoi tao dong ho
setclock SC ( .set_hc(iSW[17:14]), .set_hdv(iSW[13:10]),
.set_mc(iSW[9:6]),.set_mdv(iSW[5:2]),.clk(clk), .reset(iKEY),
.enb(iSW[1]),.out_gio(gio),.out_phut(phut),.out_giay(giay),
.led_bao_loi(oLEDG[1]), .led_hen_gio(oLEDG[0]));
//Khoi chuyen doi sang he 10
convert10 CONV0 ( gio, clk, gio_ch, gio_dv );
convert10 CONV1 ( phut, clk, phut_ch, phut_dv );
convert10 CONV2 ( giay, clk, giay_ch, giay_dv );
//Khoi giai ma
decoder_bcd DE_B0 ( giay_dv, oHEX2_D );
decoder_bcd DE_B1 ( giay_ch, oHEX3_D );
decoder_bcd DE_B2 ( phut_dv, oHEX4_D );
decoder_bcd DE_B3 ( phut_ch, oHEX5_D );
BTL Thiết kế tổng hợp IC số - TS. Nguyễn Hoàng Dũng


9
decoder_bcd DE_B4 ( gio_dv, oHEX6_D );
decoder_bcd DE_B5 ( gio_ch, oHEX7_D );
//Khoi LCD
lcd LCD
(iCLK_50,iKEY,LCD_D,oLCD_RW,oLCD_EN,oLCD_RS,oLCD_ON,oLCD_BLON);


endmodule
// Ketthuc module chinh //


2. Khối chia tần số clk_div
o Tần số đầu vào là 50MHz
o Tần số đầu ra là 1Hz
Áp dụng công thức chia tần số theo bộ đếm.

 










ra
vào
f
cnt
f
21


Từ đó suy ra, cnt = 24999999. Cần 32bit để thực hiện được bộ đếm này.



Figure 3. Khối chia tần clk_div:DIV

o Khi có reset hoặc khi đếm hết 24999999 : biến đếm (cnt hay counter ) sẽ
bằng 0.
o Trường hợp còn lại mỗi lần đếm tăng 1 thì clk lại đảo bit.

Table 2. Module chia tần clk_div
BTL Thiết kế tổng hợp IC số - TS. Nguyễn Hoàng Dũng


10
// Module chia tan

module clk_div (clk_50m,reset,clk);

input clk_50m, reset ; // Vao 50Mhz
output reg clk; // Ra 1Hz

reg [31:0] counter; // Can 32bit de dem den 25000000

always @(posedge clk_50m or negedge reset)
if ( reset == 0 )
begin
clk <= 1'b0 ;
counter <= 8'h00000000;
end
else if (counter == 24999999)
begin

clk = !clk;
counter <= 8'h00000000;
end
else
counter = counter +1'b1;

endmodule

// Ket thuc module chia tan

3. Khối LCD
3.1. Lý thuyết về khối LCD
o Các tín hiệu quan trọng :
LCD_DATA : data 8 bit,
LCD_RW : read/wirte,
LCD_EN : tín hiệu enable,
LCD_ON : tín hiệu nguồn vào,
LCD_BLON : đèn màn hình,
LCD_RS : chọn đọc dữ liệu hay đọc Command ( Command dùng để chứa
1 số các thiết lập lcd cơ bản ).
Các tín hiệu LCD_ON và LCD_BLON luôn là 1. Tín hiệu LCD_RW và
LCD_RS nếu chỉ hiển thị lên LCD thì tín hiệu LCD_RW = 0, khi cài đặt
vị trí hiển thị kí tự thì ta reset LCD_RS xuống mức 0, ghi dữ liệu thì ta
set lên 1.
Trong phần hiển thị thì tín hiệu LCD_R/W luôn đặt là 0, còn LCD_RS
khi muốn cấu hình LCD thì là 0, khi hiển thị dữ liệu thì được set lên 1.
o Cách hiển thị nội dung ra LCD : dựa vào bảng mã kí tự :

BTL Thiết kế tổng hợp IC số - TS. Nguyễn Hoàng Dũng



11

Figure 4. Bảng mã kí tự hiển thị LCD
Bảng kí tự gồm chiều ngang là 4 bit cao chiều dọc là 4 bit thấp, bảng mã
cung cấp các kí tự đơn giản đã được định nghĩa sẵn. Ví dụ : Muốn hiển
thị kí tự A thì dữ liệu vào sẽ là LHLL LLLH tức là 0100 0001.

3.2. Thiết lập khối LCD
o Khối LCD được thiết lập để hiển thị phần giới thiệu về BTL.
o Khối có đầu vào là xung clock 50MHz, bên trong có khối chia tần số
xuống 1Hz, và phím reset.
o Có khối điều khiển lcd_controller.
o Đầu ra là màn hình LCD 16x2 của KIT DE2-70.
BTL Thiết kế tổng hợp IC số - TS. Nguyễn Hoàng Dũng


12

Figure 5. Sơ đồ khối LCD

4. Khối thiết lập đồng hồ setclock
o Khối setclock là module chính tạo ra bộ đếm cho phép đồng hộ được hoạt
động, cho phép người dùng tự thiết lập thời gian thực và thời gian báo giờ
như mong muốn.


Figure 6. Khối thiết lập đồng hồ setclock:SC

o Khối nhận đầu vào là xung clock 1Hz tương ứng với 1s.

o Thiết lập thời gian với 16 switch ( iSW[17-2] ) trong đó 8 switch dùng để
thiết lập giờ, 8 switch tiếp dùng để thiết lập phút, và thiết lập theo mã nhị
phân.
+ Quy ước : iSW gạt lên lấy giá trị 1
+ iSW gạt xuống lấy giá trị 0

BTL Thiết kế tổng hợp IC số - TS. Nguyễn Hoàng Dũng


13
Table 3. Bảng mã nhị phân
Mã nhị phân
Số thập phân
0000
0
0001
1
0010
2
0011
3
0100
4
0101
5
0110
6
0111
7
1000

8
1001
9
Còn lại
x

o Các trường hợp không thỏa mãn (x) thì đèn LED xanh [1] sẽ báo lỗi.
o Thời gian được đặt trước để báo giờ là 6h, 12h, 18h. Khi đến giờ báo thì
LED xanh [0] sẽ sáng và nháy.


Table 4. Module thiết lập đồng hồ setclock
// Module thiet lap dong ho //
module setclock ( set_hc, set_hdv, set_mc, set_mdv, clk, reset,
enb, out_gio, out_phut, out_giay, led_hen_gio, led_bao_loi );

input [17:14] set_hc; // iSW[17:14] thiet lap gio_chuc
input [13:10] set_hdv; // iSW[13:10] thiet lap gio_donvi
input [9:6] set_mc; // iSW[9:6] thiet lap
phut_chuc
input [5:2] set_mdv ; // iSW[5:2] thiet lap
phut_donvi
input clk , reset, enb; // clk1Hz, iKEY, iSW[1]
output reg [5:0] out_gio,out_phut,out_giay; // Tu 00-
60 su dung 6bits
output reg led_hen_gio, led_bao_loi ;
reg [16:0] cnt; // Dem den 86400
- su dung 17bits
reg [16:0] set_in; // 17 bit luu tru
thoi gian thiet lap


/* code khong duoc hien thi
….
….
*/
endmodule
// Ket thuc module //

BTL Thiết kế tổng hợp IC số - TS. Nguyễn Hoàng Dũng


14

5. Khối chuyển đổi bit convert10
o Chức năng của khối là chuyển đổi từ hệ nhị phân ( 6bits ) sang hệ thập phân (
từ 0 đến 9 ).
o Thực hiện bằng cách chia lấy phần nguyên và lấy phần dư cho 10.
+ Phần nguyên là chữ số đầu tiên của giờ, phút, giây ( gọi là phần
chục ).
+ Phần dư là chữ số thứ ha của giờ, phút, giây ( gọi là phần đơn vị ).
o Đầu ra được đưa qua bộ giải mã để tạo mã hexa hiển thị lên LED 7 thanh.


Figure 7. Khối chuyển đổi convert10

Table 5. Module convert10
// Module chuyen doi bit //
module convert10 (out_gio_phut_giay, clk, out_ch, out_dv);

input [5:0] out_gio_phut_giay ;

input clk;
output reg [3:0] out_dv,out_ch;

parameter A = 10; // Hang so A = 10

always @(posedge clk)
begin
out_ch = out_gio_phut_giay / A; // chia het cho 10
lay phan nguyen
out_dv = out_gio_phut_giay % A; // chia lay du cho
10 lay phan du
end

endmodule
// Ket thuc //

BTL Thiết kế tổng hợp IC số - TS. Nguyễn Hoàng Dũng


15
6. Khối giải mã decoder_bcd
o Khối có chức năng giải mã từ BCD sang mã hex hiển thị lên LED 7 thanh.


Figure 8. Sơ đồ khối khối giải mã decoder

o Đầu vào là mã bcd 4 bit, qua bộ giải mã decoder để hiển thị trên LED.

Table 6. Bảng giải mã decoder sang LED 7 thanh
Mã bcd[3:0]

Đầu ra anot chung [0:6]
0000
0000001 (0)
0001
1001111 (1)
0010
0010010 (2)
0011
0000110 (3)
0100
1001100 (4)
0101
0100100 (5)
0110
1100000 (6)
0111
0001111 (7)
1000
0000000 (8)
1001
0001100 (9)
default
0000001 (0)

Table 7. Module giải mã BCD

// Module giai ma BCD

module decoder_bcd (bcd,HEX);


input [3:0] bcd;
output reg [0:6] HEX;
BTL Thiết kế tổng hợp IC số - TS. Nguyễn Hoàng Dũng


16





























always @ (bcd)
case (bcd)
4'b0000 : HEX = 7'b0000001;
4'b0001 : HEX = 7'b1001111;
4'b0010 : HEX = 7'b0010010;
4'b0011 : HEX = 7'b0000110;
4'b0100 : HEX = 7'b1001100;
4'b0101 : HEX = 7'b0100100;
4'b0110 : HEX = 7'b1100000;
4'b0111 : HEX = 7'b0001111;
4'b1000 : HEX = 7'b0000000;
4'b1001 : HEX = 7'b0001100;
endcase

endmodule

// Ket thuc decoder_bcd
BTL Thiết kế tổng hợp IC số - TS. Nguyễn Hoàng Dũng


17
PHẦN B. MÔ PHỎNG VÀ THỰC TẾ

Kết quả thu được khi chạy trên KIT DE2-35






BTL Thiết kế tổng hợp IC số - TS. Nguyễn Hoàng Dũng


18
PHẦN C. KẾT LUẬN

Trong thời gian thực hiện đề tài, chúng em đã được thầy tạo mọi điều kiện về
tài liệu cũng như cơ sở vật chất để nhóm hoàn thành tốt đề tài trong thời gian sớm
nhất.
Do vẫn còn rất nhiều hạn chế về kiến thức nên đề tài chưa được phát triển
một cách tối ưu nhất, nên trong thời gian tới nhóm chúng em rất mong nhận được
sự giúp đỡ nhiệt tình của thầy để chúng em có thể tiếp tục phát triển đề tài này và
hoàn thành tốt những đề tài sau này.
Cuối cùng chúng em xin gửi lời cảm ơn chân thành đến thầy, kính chúc thầy
và gia đình mạnh khỏe, chúc thầy ngày càng thành công trong công việc.
Chúng em xin cảm ơn !!!

×