Thông báo

Collapse
No announcement yet.

Xin giúp Real time clock với Kit Spartan-3 Starter

Collapse
X
 
  • Lọc
  • Giờ
  • Show
Clear All
new posts

  • Xin giúp Real time clock với Kit Spartan-3 Starter

    E đang làm đồ án về mảng PLD - Asic.
    Đồ án của e có nội dung sau :
    Đồng hồ số dùng Real Time Clock với Kit Spartan-3 Starter, dùng ngôn ngữ VHDL, hiển thị giờ phút giây xuất ra Monitor.
    E biết căn bản về VHDL ( lập trình cổng logic or, not, and..., mô phỏng và nạp chương trình cho kit )
    , biết căn bản về chuẩn SPI, I2C, RS232
    Có 1 số vấn đề e xin hỏi các pro :
    Trong trường hợp này thì xài Real Time Clock nào cho đơn giản, giao tiếp theo chuẩn nào
    Nếu có thể cho e xin tài liệu, code để tham khảo.
    File đính kèm là Kit Spartan-3 Starter e đang dùng.
    Xin cám ơn
    Attached Files

  • #2
    Nguyên văn bởi sonca4321 Xem bài viết
    E đang làm đồ án về mảng PLD - Asic.
    Đồ án của e có nội dung sau :
    Đồng hồ số dùng Real Time Clock với Kit Spartan-3 Starter, dùng ngôn ngữ VHDL, hiển thị giờ phút giây xuất ra Monitor.
    E biết căn bản về VHDL ( lập trình cổng logic or, not, and..., mô phỏng và nạp chương trình cho kit )
    , biết căn bản về chuẩn SPI, I2C, RS232
    Có 1 số vấn đề e xin hỏi các pro :
    Trong trường hợp này thì xài Real Time Clock nào cho đơn giản, giao tiếp theo chuẩn nào
    Nếu có thể cho e xin tài liệu, code để tham khảo.
    File đính kèm là Kit Spartan-3 Starter e đang dùng.
    Xin cám ơn
    Bạn muốn xuất ra monitor nào?
    - Xuất theo cổng VGA trên kit hay xuất ra monitor của máy tính chay window?
    Code thì không thiếu, trên mạng đầy. Việc cần làm là bạn cần những code gì?
    Bạn thiết kế sơ đồ khối trước đi. Dùng cách chia các khối theo chức năng của nó.

    Comment


    • #3
      Mình xuất ra cổng Vga trên Kit, sau do cắm Monitor vi tính vào cổng Vga Kit này để xuất ra màn hình.
      Sơ đồ khối mình như sau :
      Khối thời gian : Dùng để cung cấp dữ liệu thời gian cho Kit Spartan-3 theo kiểu HH-MM-SS, gồm IC Real Time và 3 nút nhấn up - down - Mode, để cài đặt giờ - phút, khi nhấn nút Mode thì phút được chọn để chỉnh tăng giảm, nhấn Mode lần nữa thì giờ được chọn, nhấn Mode nữa thì là cài đặt xong thời gian.
      Khối xử lý : Kit Spartan-3 làm nhiệm vụ đọc và xử lý dữ liệu thời gian từ Khối thời gian, để xuất dữ liệu ra cổng Vga của Kit, từ đó hiển thị trên Monitor vi tính.
      Khối hiển thị : Là monitor CRT của máy vi tính, hiển thị giờ - phút - giây lên màn hình, với dữ liệu được lấy từ cổng Vga trên Kit Spartan-3.
      Cho mình hỏi : Với thiết kế sơ đồ khối trên thì đã ổn chưa ? Dùng IC Real Time nào để đơn giản nhất, giao tiếp theo chuẩn nào, cách Cpu Xilin truy xuất của vào ô nhớ thời gian của IC Real Time ?
      Cám ơn

      Comment


      • #4
        bạn có thể dùng thời gian thực DS1307 là dễ nhất dùng chuẩn i2c. cách đọc thanh ghi của con này có thể serch trên diễn đàn nhiều bét nhè. về phần giao tiếp VGA thì phải tạo font chữ hiển thị, ở đây tối thiểu là các số từ 0-9, và dấu ; nữa.

        Comment


        • #5
          Mình nghĩ khối thời gian nên tách ra: khối giao tiếp với Real-Time-Clock và khối user-interface. 2 khối này nối chung qua khối xử lý trung tâm. Khối xử lý trung tâm có thể là một state-machine cũng có thể là Xilinx CPU hoặc 8051CPU (hình như chỗ này có www.opencores.org), tùy bạn.
          Khối xử lý nên tách riêng ra thành khối xử lý và khối xuất ra màn hình (VGA driver).
          Để phần xuất ra được bắt mắt (ghi điểm), mình nghĩ bạn có thể xuất ra 1 cái ảnh thay vì xuất ra font chữ.

          Nếu bạn hacthiet dùng DS1307 rồi thì bạn cũng nên dùng, có người tham khảo.
          - Về real-time-clock, mình nhớ là starter-kit có 1 cai socket để gán external oscillator, bạn có thể kiếm mua loại oscillator tốt tốt hoặc dùng oscillator trên board luôn cũng được. Rồi tự viết VHDL để tạo bộ đếm, tùy theo nhu cầu "real-time" của bạn. ...

          Vài điều tham khảo.

          Comment


          • #6
            Mình xin tiếp thu ý kiến của bạn hacthiet và jefflieu.
            Nếu dùng DS1307 thì phải sử dụng chuẩn I2C, theo mình tìm hiểu thì Kit Spartan-3 Starter ko hỗ trợ chuẩn I2C. Do đó muốn sử dụng I2C thì phải lập trình để tạo ra. Trên trang Opencores.org có source code để tạo chuẩn I2C. Mình vừa làm đề tài đồng hồ số dùng pic 16F877A giao tiếp I2C với DS1307, nên biết chút về chuẩn I2C và sơ đồ thanh ghi bộ nhớ thời gian của DS1307.
            Mình muốn hỏi là làm cách nào để Xilin truy xuất được vào DS1307, có giống cách Pic truy xuất DS1307 ko ? Có thể cho mình tài liệu hoặc code minh hoạ ?
            Cám ơn

            Comment


            • #7
              Ngoài sử dụng DS1307 với giao tiếp I2C ra, thì có thể dùng IC Real Time nào khác nữa ?

              Comment


              • #8
                Pro nào giúp mình với

                Comment


                • #9
                  Đi hỏi Larry Page với Sergey Brin đi

                  Comment


                  • #10
                    Sau 1 thời gian nghiên cứu, mình quyết định sủ dụng Real Time DS12C887A. Do việc nhúng cores I2C vượt quá khả năng của mình. Mình định sử dụng phương pháp truyền song song Real Time với Xilinx, nhưng ko biết cách truy xuất và cập nhật thời gian thế nào, pro nào biết chỉ mình với ???

                    Comment


                    • #11
                      Sau đây là quá trình nghiên cứu của mình, mong các pro chỉ giúp :
                      Đầu tiên là mình tham khảo Đồng hồ thời gian thực của 89C51 Và Ds12C887, chi quan tâm đến phần Khởi tạo, Truy xuất và cập nhập thời gian cho Real Time, Code như sau :
                      ;CHUONG TRINH DONG HO SO DUNG REAL TIME
                      MODE BIT P3.0
                      UP BIT P3.1
                      DWN BIT P3.2
                      BMODE EQU R2
                      ORG 000H
                      CALL KT_DALLAS
                      MOV BMODE,#0

                      MAIN:
                      CALL DOC_GPG
                      CALL HEX_BCD
                      CALL BCD_7DOAN
                      CALL HTHI
                      JNB MODE,ADJ
                      JMP MAIN

                      KT_DALLAS:
                      MOV R0,#0AH
                      MOV A,#20H
                      MOVX @R0,A
                      MOV R0,#0BH
                      MOV A,#06H
                      MOVX @R0,A
                      RET

                      DOC_GPG:
                      MOV R0,#0
                      MOVX A,@R0
                      MOV 30H,A

                      MOV R0,#02H
                      MOVX A,@R0
                      MOV 31H,A

                      MOV R0,#04H
                      MOVX A,@R0
                      MOV 32H,A
                      RET

                      ADJ:
                      CALL HTHI
                      JNB MODE,ADJ
                      INC BMODE
                      CJNE BMODE,#4,LB11
                      MOV BMODE,#0
                      JMP MAIN

                      LB1: MOV 61H,#10
                      LB2: MOV 60H,#7FH
                      CALL DOC_GPG
                      CALL HEX_BCD
                      CALL BCD_7DOAN

                      SANG: CALL HTHI
                      JNB UP,TANG
                      JNB DWN,GIAM
                      JNB MODE,ADJ
                      DJNZ 60H,SANG
                      MOV 60H,#7FH
                      CJNE BMODE,#1,CHOPM
                      MOV 24H,#0FFH
                      MOV 25H,#0FFH
                      JMP TAT

                      CHOPM:
                      CJNE BMODE,#2,CHOPS
                      MOV 23H,#0FFH
                      MOV 22H,#0FFH
                      JMP TAT

                      CHOPS: MOV 20H,#0FFH
                      MOV 21H,#0FFH

                      TAT: CALL HTHI
                      JNB UP,TANG
                      JNB DWN,GIAM
                      JNB MODE,ADJ
                      DJNZ 60H,TAT
                      DJNZ 61H,LB2
                      MOV BMODE,#0
                      JMP MAIN

                      TANG: MOV 62H,#50

                      TANGH: CALL HTHI
                      DJNZ 62H,TANGH
                      CJNE BMODE,#1,TANGM
                      MOV R0,#04H
                      MOVX A,@R0
                      INC A
                      CJNE A,#24,GHI1

                      GHI2: MOV A,#0

                      GHI1: MOVX @R0,A
                      JMP LB1


                      TANGM:
                      CJNE BMODE,#2,TANGS
                      MOV R0,#02H
                      MOVX A,@R0
                      INC A
                      CJNE A,#60,GHI1
                      JMP GHI2

                      TANGS: MOV R0,#0
                      MOVX A,@R0
                      INC A
                      CJNE A,#60,GHI1
                      JMP GHI2

                      GIAM: MOV 62H,#50

                      GIAMH: CALL HTHI
                      DJNZ 62H,GIAMH
                      CJNE BMODE,#1,GIAMM
                      MOV R0,#04H
                      MOVX A,@R0
                      DEC A
                      CJNE A,#0FFH,GHI3
                      MOV A,#23

                      GHI3: MOVX @R0,A
                      JMP LB1

                      GIAMM:
                      CJNE BMODE,#2,GIAMS
                      MOV R0,#02H
                      MOVX A,@R0
                      DEC A
                      CJNE A,#0FFH,GHI3
                      MOV A,#59
                      JMP GHI3

                      GIAMS: MOV R0,#0
                      MOVX A,@R0
                      DEC A
                      CJNE A,0FFH,GHI3
                      MOV A,#59
                      JMP GHI3

                      HEX_BCD:
                      MOV A,30H
                      MOV B,#10
                      DIV AB
                      MOV 10H,B
                      MOV 11H,A

                      MOV A,31H
                      MOV B,#10
                      DIV AB
                      MOV 12H,B
                      MOV 13H,A
                      MOV A,32H
                      MOV B,#10
                      DIV AB
                      MOV 14H,B
                      MOV 15H,A
                      RET

                      BCD_7DOAN:
                      MOV DPTR,#MA7DOAN
                      MOV R0,#10H
                      MOV R1,#20H

                      BCD: MOV A,@R0
                      MOVC A,@A+DPTR
                      MOV @R1,A
                      INC R0
                      INC R1
                      CJNE R0,#16H,BCD
                      RET

                      HTHI:
                      MOV R0,#20H
                      MOV A,#0DFH

                      HT: MOV P1,@R0
                      MOV P2,A
                      CALL DELAY
                      MOV P2,#0FFH
                      INC R0
                      RR A
                      CJNE A,#0BFH,HT
                      RET


                      DELAY:
                      MOV 70H,#50
                      DJNZ 70H,$
                      RET

                      MA7DOAN: DB 0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H
                      END

                      Comment


                      • #12
                        Và Sơ đồ nguyên lý của mạch 89C51 + DS12C887 và Datasheet của DS12C887 ( bằng TV ) ( chú ý xem các chân AD0-AD7, AS, DS, R/W, CS và dạng sóng truyền nhận theo chuẩn Intel của nó ).
                        Thạch anh dao động của 89C51 là 12Mhz và clock ra của chân Ale là 2M, do đó dao động của DS12C887 là 2M.
                        Mình tính phần khởi tạo Real Time khoảng 1 chu kỳ máy = 1/10 x 12Mhz, làm tròn là 1Mhz.
                        Dao động của Kit Spartan là 50MHZ, do đó cần chia cho 100, để được clock làm việc là 1 Mhz giống như mạch Real Time.
                        Dựa vào giản đồ thời gian truyền nhận của Real Time DS12C887 theo chuẩn Intel, thì mình định viết chương trình theo giản đồ đó.
                        Xin hỏi các pro, mình suy đoán như vậy có đúng ko, mong nhận được sự góp ý của mọi người
                        Attached Files

                        Comment


                        • #13
                          Tình hình là mình đã viết code giao tiếp với Real time DS12C887, có điều là chỉ chạy được lúc khởi tạo Dallas rồi dừng, ko thể chạy tiếp, đã đo bằng đồng hồ đo, Osciloscope, đúng với dạng sóng thời gian của nhà sản xuất nhưng vẫn ko chạy. Mong nhận được sự giúp đỡ của các pro, hoặc ai có ý định nghiên cứu có thể gửi mail cho mình, mình gửi code. Mail : vuducsaobien85@yahoo.com ( gửi sau 15/ 8, vì giờ mình đang bận làm đồ án tốt nghiệp )

                          Comment

                          Về tác giả

                          Collapse

                          sonca4321 Tìm hiểu thêm về sonca4321

                          Bài viết mới nhất

                          Collapse

                          Đang tải...
                          X