



















Preview text:
  lOMoAR cPSD| 59703641
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  MÔN THIẾT KẾ VLSI 
ĐỀ TÀI: THIẾT KẾ ĐỒNG HỒ SỐ 
 Giảng viên hướng dẫn : Ts Nguyễn Vũ Thắng 
 Nhóm sinh viên thực hiện: 
 Nguyễn Văn Thoan - 20092602 - ĐTVT06 
 Nguyễn Hà Giang - 20090860 - ĐTVT11 
 Phùng Mạnh Hưng - 20093902 -ĐTVT12  Nguyễn Xuân Thắng     Hà Nội 3/2013         MỤC LỤC   
MỤC LỤC..................................................3  A. 
MÔ TẢ CHI TIẾT THIẾT KẾ.........................................................3 
2.3 Sơ đồ nối dây bên trong.........................................................................5 
2.4 Mô tả chức năng từng khối....................................................................6  B. 
PHẦN MỀM SYNOPSYS................................................................13 
6. ICC.........................................................................................................................................41 
 ......................................................................................55 
KẾT LUẬN....................................................................................................55 
TÀI LIỆU THAM KHẢO............................................................................56                     
A. MÔ TẢ CHI TIẾT THIẾT KẾ  1. Tổng quan  1.1. Yêu cầu chức năng 
 IC đồng hồ số có chức năng đếm từ 00:00:00 đến 23:59:59 
 Có hai nút bấm (M,H) điều chỉnh giờ, phút, giây. 
 Đầu ra hiển thị trực tiếp lên led 7 thanh 
 Có chân reset không đồng bộ, chân enable đồng bộ 
1.2. Yêu cầu phi chức năng 
 Mô tả thiết kế sử dụng ngôn ngữ Verilog 
 Tổng hợp thiết kế, mô phỏng và layout sử dụng phần mềm synopsys 
 Hoàn thiện thiết kế trong thời gian 8 tuần 
2. Sơ đồ khối 
2.1. Sơ đồ khối tổng quát          Tên chân  Chức năng    Clock 
Cấp tín hiệu xung clock cho IC    Reset 
Reset đồng hồ về trạng thái khởi tạo ban đầu    Output 
Các tín hiệu đầu ra để đưa đến led 7 thanh    VDD,GND 
Chân cấp nguồn cho IC hoạt động    H,M 
Điều chỉnh thời gian giờ, phút, giây 
2.2 Sơ đồ khối chi tiết   
2.3 Sơ đồ nối dây bên trong       
2.4 Mô tả chức năng từng khối 
 Bộ điều chỉnh: có nhiệm vụ điều chỉnh giờ, phút, giây 
 Bộ đếm: có nhiệm vụ đếm thời gian, đầu ra đưa vào bộ giải mã 
 Bộ giải mã: Giải mã tín hiệu ra của bộ đếm để đưa ra hiển thị trên led 7 thanh. 
 LED 7 thanh : Hiển thị giá trị giờ, phút, giây. 
3. Thiết kế chi tiết từng khối  3.1 Khối điều chỉnh 
 Khối điều chỉnh có nhiệm vụ điều chỉnh thời gian,có 2 nút bấm M và H để  điều chỉnh. 
• M = 0 và H = 0 các bộ đếm giờ, phút, giây hoạt động bình thường theo 
xung clock.(Couter giây hoạt động theo clock ngoài, counter phút hoạt     
động theo clock_out của counter giây, counter giờ hoạt động theo clock_out  của counter phút). 
• M = 0 và H = 1 lúc đó đếm giây sẽ tự tăng theo xung clock còn phút và giờ 
không thay đổi ( lúc này chân clock vào của counter đơn vị phút và giờ 
bằng 0. Clock_in của giây bằng với clock ngoài 1 giây tăng 1 đơn vị) 
• M = 1 và H = 0 lúc đó đếm phút sẽ tự tăng theo xung clock còn giây và giờ 
không thay đổi (lúc này chân clock vào của counter đơn vị giây và giờ bằng 
0. Clock_in của counter phút bằng với clock ngoài 1 giây tăng 1 đơn vị) 
• M = 1 và H =1 lúc đó đếm giờ sẽ tự tăng theo xung clock còn giây và phút 
không thay đổi.( lúc này chân clock vào của counter đơn vị giây và phút 
bằng 0. Clock_in của giờ bằng với clock ngoài 1 giây tăng 1 đơn  vị. )   Sơ đồ thuật toán          3.2 Khối Counter 
 Khối counter thực hiện chức năng đếm: tăng giá trị output lên 1 khi có sườn 
xuống của xung clock. Khi có tín hiệu reset thì output được gán bằng 0   Sơ đồ khối   clk_in  bcd_out  COUNTER set     reset  clk_out   Các đầu vào đầu ra    Tên chân  I/O  Số bit  Nhiệm vụ 
clk_in I 1 Sườn lên của tín hiệu là điều kiện để thực hiện chức năng đếm    set  I  1 
Thiết lập giới hạn cho bộ đếm 
reset I 1 Thiết lập lại các giá trị của bộ đếm bcd_out O 4 Đầu ra là mã BCD, 
tăng lên 1 đơn vị khi có sườn lên của xung clock     
 Để thực hiện chức năng đếm giờ thì ta cần 6 bộ đếm cho các giá trị giờ,  phút giây : 
• Đầu vào của bộ đếm hàng đơn vị giây là xung clock 1 Hz tức là cứ 1 
xung thì tăng giá trị lên 1 khi output= “1001” thì reset về “0000”, bit 
output[3] được đưa vào làm đầu vào cho clock bộ đếm hàng chục giây 
khi output=”0101” thì reset về “0000”. 
• Tương tự với các bộ đếm phút. 
• Bộ đếm giờ : tương tự như trên thêm 1 trạng thái reset khi 23:59:59   Sơ đồ thuật toán     
 Mô phỏng tín hiệu của bộ đếm (Counter)   
3.3 Khối giải mã LED 7 thanh     
 Thực hiện chức năng giải mã : Đầu vào là mã BCD của bộ đếm, đầu ra là 
tín hiệu điều khiển led 7 thanh     Các đầu vào đầu ra  Tên chân  I/O  Số bit Nhiệm vụ Input  I  4
 Mã BCD lấy từ bộ đếm    Output  O  7 
Đầu ra tương ứng mã BCD để điều khiển led 7  thanh     Sơ đồ thuật toán           Bảng giá trị  Đầu vào  Đầu ra  Giá trị hiển thị  0  0  0  0  1  1  1  1  1  1  0  0  0  0  0  1  0  1  1  0  0  0  0  1  0  0  1  0  1  1  0  1  1  0  1  2            B.   PHẦN MỀM SYNOPSYS 
1. Check leda và mô phỏng timing 
Leda là công cụ khá đơn giản trong các phần mềm synopsys giúp người dùng có thể 
kiểm tra khả năng tổ hợp của các code RTL của mình Dưới đây là hướng dẫn sử  dụng công cụ này : 
• Đầu tiên khởi chạy phần mềm synopsys trên terminal sau đó chạy leda bằng 
câu lệnh “leda” màn hình chương trình chạy lên chọn New project → ok.   
• Khi các cửa sổ khác hiện lên chọn next ,click chọn năm 2001,chọn next tới khi 
chương trình hỏi add file chúng ta sẽ add tất cả các file code RTL của thiết kế 
vào (trừ file tesbench) → ok         
• Tại cửa sổ unit name ta chọn module mà muốn test sau đó chọn  Tesclock/reset        
• Sau đó chọn chân tín hiệu muốn test click vào mũi tên như hình dưới   
• Chọn ok để bắt đầu kiểm tra. 
Hình dưới là kết quả kiểm tra :       
• Chúng ta có thể chuyển sang phần tiếp theo là mô phỏng timing của code 
RTL xem có đúng chức năng không 
• Chúng ta sẽ tạo một foder chứa tất cả file code RTL sau đó mở terminal ở foder 
đó rồi gõ lệnh vcs –debug +v2k *.v 
Sau khi debug sẽ tạo ra file simv là file mô phỏng timing của mạch ,chúng ta 
mở file simv bằng lệnh :  ./simv –gui  
Kết quả mô phỏng như sau :         
2. Design Compile DC dùng để thực hiện tổ hợp mạch logic mức cổng và tối ưu mạch  logic mức cổng 
Tạo foder DC sau đó bật terminal tại forder đó     
Bước1: (chạy chương trình) 
Gõ lệnh dc_shell –gui để chạy DC như hình dưới   
Bước2 (cài đặt thư viện) 
Trên giao diện click vào setup → sau đó chọn các đường dẫn các file thư viện theo  chỉ dẫn 
- search path /home/hoangbinh/milkyway   -targetlib  
/home/hoangbinh/milkyway/tcbn45gsbwp_120a/frame_only_HVH_0d5_0/tcbn45gs 
bwp/LM/tcbn45gsbwpbc.db  
- symbol lib /usr/synopsys/dc/libraries/syn/generic.sdb  
- synthetic lib /usr/synopsys/dc/libraries/syn/dw_foundation.sldb  
- link lib bao gồm taget voi synthetic      
Sau khi setup thư viện chúng ta chạy lệnh Set_svf top.svf vào 
file chọn read → chọn file Digital_Clock     
Bước 3 (analyze code RTL) 
Trên giao diện DC click chọn analyze sau đó đến đường dẫn và chọn các file code 
RTL (trừ file tesbench) → ok 
Tiếp theo chọn file → elaborate, trên thanh design chọn Digital_Clock ok       
Bước 4: contrain 
Trước tiên click vào biểu tượng logich trên tool để tạo ra hình vẽ các khối như hình  dưới đây        Constrains clk 
-click vào chân clk trên hình → chọn attributes → chọn specify clock ở các ô 
clock name,rising,falling chọn thong số phù hợp có thể như hình dưới         
Constrains input (en,reset) Click cả hai chân input → chọn attributes → chọn input 
delay rồi cấu hình như hình dưới