Thông báo

Collapse
No announcement yet.

Đố vui về PIC, các câu đố cực vui và cực hay... hehe..

Collapse
This topic is closed.
X
This is a sticky topic.
X
X
 
  • Lọc
  • Giờ
  • Show
Clear All
new posts

  • #76
    Tính về chu kỳ, nếu 89 thực hiện hết khoảng 50 chù kỳ thì lúc đó PIC thực hiện hết khoảng 150 chu kỳ máy. Tức là gấp 3 lần. Trong khi đoạn code khoảng 6,7 chù kỳ của việc nhân 8 bit x 8 bit, với PIC là khoảng 34, tức gấp 5,6 lần. Đến 32 bit thì thuật toán gần như được giảm đi rất nhiều, vì thuật toán nhân 32 bit gần như chỉ chênh lệch nhau theo hệ số cộng của lệnh nhân 8 bit.

    Chính vì thế nên tôi mới so sánh là như nhau, chắc CB chưa tính và ước lượng thử con số này cụ thể nên cho rằng tôi áp đặt.

    Còn trong công thức PID, thực chất chỉ có 3 phép nhân, đó là nhân các hệ số PID. Với thông số thực tế tôi đưa, và những ứng dụng thực tế nhân với số float 32 bit, kể cả 16 bit đi nữa, đố ai viết được PID trên 89 với 100 chu kỳ máy.

    Thông số này cho thấy cần ít nhất khoảng 200 (50 x 3 + 50)chu kỳ. Trogn khi đó PID trên PIC khoảng 500 (150 x 3 + 50) chu kỳ với phép nhân 16 bit.

    Đây là một yếu điểm của PIC nhưng nhắc lại, nó không phải là do kiến trúc RISC hay CISC quyết định mà do phần core của PICmidrange không hỗ trợ lệnh nhân. Các bạn sẽ có thể tính thế này:

    Lệnh của PIC midrange có 14 bit. Khi đó 8 bit dùng để lưu địa chỉ thanh ghi hoặc hằng số k. Khi đó nó còn lại 6 bit, nghĩa là có thể lập được 64 lệnh.

    Trong khi đó, có những lệnh cần chỉ số d = f or w, nên số lệnh này nếu tính thêm một bit d thì còn lại 32. Nhưng thực ra, trong 32 lệnh tạo ra, và trong 32 lệnh có thể tạo ra này, các bạn xem lại, sẽ thấy có những lệnh chỉ tương tác với W, không cần giá trị d, vì vậy thừa 1 bit. Số lệnh này nhiều hơn 5 lệnh, cho nên có thể tạo ra một lệnh nên vẫn còn thừa 1,2 lệnh có thể tạo ra để tương tác với W, d. Và đảm bảo còn thừa chỗ để mã hóa cả lệnh nhân và lệnh chia.

    Nhưng rất tiếc là phần cứng không hỗ trợ. Vậy thì không thể thực hiện được.

    Như vậy, nhận xét về CISC và RISC không thể hiện ở chỗ này. Kết luận của CB là sai, vì lệnh nhân không phải do vấn đề RISC hay CISC quyết định.

    Chúc vui.
    Falleaf
    Công ty TNHH Thương mại và Giao nhận R&P
    58/57 Nguyễn Minh Hoàng - Phường 12 - Quận Tân Bình - TP.HCM
    mail@falleaf.net - VP: (04) 36408561 - (08) 38119870

    Comment


    • #77
      Nguyên văn bởi falleaf
      Như vậy, nhận xét về CISC và RISC không thể hiện ở chỗ này. Kết luận của CB là sai, vì lệnh nhân không phải do vấn đề RISC hay CISC quyết định.

      Chúc vui.
      He he.. em cũng ko biết em sai chỗ nào nữa. Nếu có là hơi nói quá đáng lệnh nhân 89 và PIC16 nhanh gấp 10 lân nhau. Rút lại hơi quá: theo bác F là 3 lần thui. Bác nào có thể tối ưu cho 89 để nhỏ hơn 50 chu kỳ ko? Còn PIC thì chắc bác F đã tối ưu rồi.Còn chuyện 100 hay 1000 là em nói tỷ lê tương đối, bác đọc kỹ bài em tý.

      Còn việc đem so sánh 2 kiến trúc CISS,RISS thì đó là hầu như tất cả các sách giáo khoa nói. Bác nào coi lại cho em, em nhớ ko nhầm đâu.

      Con chuyện đưa ra lệnh CISC và RISC thì em ko hề đưa ra 1 ví dụ nào cả. Ở trên em chỉ nói về 89 và PIC về lệnh nhân chứ ko đem khái quát(đoạn đó em còn xuống dòng 1 lần để tách ra 2 đoạn viết rồi đó). Vì CISC của PIC16 là một trường hợp chứ ko phải đại diện tiêu biểu của CISC. Vì nếu đưa PIC16 thì oan cho CISC quá
      -------------------

      Comment


      • #78
        Ah, rất cảm ơn bác F về 2 ví dụ bác viết ở trên, em cũng đỡ phải đi debug xem PIC nó chém của em hết bao nhiêu lệnh nếu có dùng PID.
        Hà hà..
        -------------------

        Comment


        • #79
          Bạn CB xem lại, PIC18 phải chăng là CISC, tại sao vẫn có lệnh nhân và chỉ chiếm có 1 chu kỳ máy? Chỉ riêng chuyện này, đã kết luận rõ ràng, kiến trúc CISC và RISC không quyết định việc có thể thực hiện phép nhân hay không.

          Vì sao tập lệnh của PIC18 nhiều hơn tập lệnh PIC16? Tại vì độ dài mã lệnh (Instruction Length) của PIC18 là 16 bit, trong khi PIC16 là 14 bit. Hình như tôi đã có post một bài về tập lệnh, trong đó có phân tích rõ vấn đề này.

          Toàn bộ uC của PIC đều là kiến trúc RISC, không phải CISC. Có lẽ bạn hiểu nhầm ở đâu đó. AVR cũng là kiến trúc RISC. Chỉ có 89 là kiến trúc CISC thôi.

          Nhưng vì lý do cần đem những cái nào đa số mọi người biết để làm thí dụ, nên tôi tạm lấy PIC16 và 89 để so sánh giữa CISC và RISC. Vì thế cho nên tôi mới không đặt vấn đề về tốc độ xử lý của hai dòng, mà chỉ quan tâm đến vấn đề chu kỳ máy.

          Vấn đề cơ bản là RISC và CISC đã được nói nhiều trong các sách, nhưng chưa thấy sách nào chỉ ra các vấn đề dưới dạng thí dụ thực tế để so sánh, và giúp sinh viên hiểu một cách tường tận (đối với các ngành học liên quan đến vi điều khiển). Chính vì vậy, tôi đặt ra vấn đề này, để các bạn sinh viên trong lớp vdk PIC thử suy nghĩ và chỉ ra những điểm khác biệt, thuận lợi và khó khăn... để từ đó thấy rằng vì sao cho đến nay, những máy tính cỡ nhỏ (P4 vẫn là nhỏ) vẫn sử dụng kiến trúc RISC, bằng chứng cụ thể là buồn buồn các bạn vẫn có thể thay RAM, vui vui các bạn vẫn có thể thay mainboard.

          Còn về thư viện source code, tôi cho rằng có quá nhiều, thậm chí có cả những thuật toán mang tính chất thống kê. Khi bạn tính toán với một số này, hoặc một số khác thì số chu kỳ tính toán có thể bị thay đổi.

          Mong rằng các bạn tiếp tục phân tích cái ý này. Một trong các ý này tôi đã phân tích trong kỹ thuật bảng, đó là việc tận dụng được mã lệnh để lưu dữ liệu. Có vấn đề nào khác nữa chăng?
          Falleaf
          Công ty TNHH Thương mại và Giao nhận R&P
          58/57 Nguyễn Minh Hoàng - Phường 12 - Quận Tân Bình - TP.HCM
          mail@falleaf.net - VP: (04) 36408561 - (08) 38119870

          Comment


          • #80
            Hihiihhihii

            Này công huynh đệ !
            Ca ca học tin học công nghiệp 46 hihihih . Huynh ko dám tranh luận . Bộ môm mình có phòng thí nghiệm 68hc11 . AVR , Pic huynh cũng xem qua . Huynh có cảm giác 68hc** vẫn là con ổn định và chắc chắn .nó lại ko phổ biến ở Việt nam mình . Còn việc dạy 8051 trong trường học cũng có lý do của nó . Huynh cũng giống đệ luôn tự hào về bộ môn mình(hihihihihih) . Đệ tuổi còn trẻ mà có một số căn cơ . Đáng khen . Làm cho những người đi trước như huynh xấu hổ quá .
            Đêm khuya ko ngủ được ra net . Thấy anh em tranh luận vui quá .
            ----------------------------------------------------------------------
            Công à ! có khi anh em mình phải cố gắng làm rạng danh môn phái . Để kahửng định một thương hiệu

            Comment


            • #81
              Nguyên văn bởi MicroDuyphi
              " Nghiêm cấm sử dụng hình thức moi móc. Bạn đã biết tôi làm gì cho hoạt động của PIC chưa, và một lần nữa chơi cái trò cùn này, thì bạn sẽ biến ngay lập tức, chứ đừng nói là mod của một box dientuvietnam."

              Đoàn Hiệp viết cho Duy Phi.
              Duy Phi thành thật có lời xin lỗi anh Đoàn Hiệp, mặc dù hơi trễ,nhưng anh cũng đừng giận dữ quá mức đến thế, nghe không vui tí nào cả.
              Xem như đây là bài học, Phi xin rút kinh nghiệm.

              Comment


              • #82
                Chắc dạo này mùa đông nên không khí học PIC của anh em ta giảm xuống, Tui post lên đây một câu hỏi nhỏ, các bác đọc rồi thảo luận cho vui nhé:
                Chân RA4 của 16F877A có gì đặc biệt so với chân khác, nếu định nghĩa như cách thông thường(Như các chân RA0->RA3,RA5) là In/Out số chẳng hạn, nó có hoạt động không, tại sao ?

                Comment


                • #83
                  Các đặc biệt chân RA4:
                  +Là chân kiểu ST.
                  +Là ko phải AN4(ko phải lối vào ADC như các chân RA khác), nên nó ko có mặt trong các định nghĩa của ADCCON1/2. Nó là số
                  +Open drain--->ko nối trở lên VDD thì khi mức 1 là trở kháng cao.
                  +Là chân comparator out, và T0 input.

                  Comment


                  • #84
                    4MD có ý kiến gi ko? có ai có câu hỏi về PIC16 như trên nữa ko nhẩy.
                    -------------------

                    Comment


                    • #85
                      Sorry bác F vì cứ lẫn lộn 2 thuật ngữ CISC và RISC.

                      Lâu lâu ko thấy đố nhau PIC, tui khuấy động phong trào lên tý hé.
                      Tui có 1 câu đố nho nhỏ với PIC16F877a vậy:
                      Giả sử phần cứng :
                      + 3 chân PortE là 3 chân lối vào để đọc trạng thái.

                      +PortD điều khiển 8 rơ le,tắt rơ le thì tín hiệu đk là 0, ban đầu khởi tạo thì tắt hết rơ le.

                      Vậy nếu khởi tạo như sau:

                      ADCON=0x07;
                      TRISE=0b11111111;
                      TRISD=0b00000000;
                      PORTD=0b00000000;

                      Vậy khởi tạo như vậy đúng hay sai?
                      -------------------

                      Comment


                      • #86
                        Sao ko ai trả lời được câu đố ở trên nhỉ?
                        -------------------

                        Comment


                        • #87
                          Chỉ cần thay dòng:
                          TRISE=0b11111111--->thành: TRISE=0b00000111; là chạy tốt. Bởi vì:
                          thanh ghi TRISE chỉ dành 3 bit thấp cho định nghĩa hướng I/O. Còn các bit còn lại thì dành cho việc giao tiếp parallel. Khi TRISE=0bxxx1xxxx thì cổng D là cổng giao tiếp parallel nên ko dành cho việc I/O thông thường. Datasheet nói khá rõ cái này.
                          Đây cũng là một số lỗi người dùng ko đọc kỹ datasheet nên rất dễ mắc phải.

                          Comment


                          • #88
                            He he..đúng rùi, em bị cái vụ này mà dò mãi mới phát hiện ra. Cái tội ko đọc kỹ datasheet
                            -------------------

                            Comment


                            • #89
                              Gửi 4MD: câu đố của bác tại chân RA4 có thêm 1 tính năng đặc biệt nữa mà có khi bác ko nghĩ ra cũng nên... he he...
                              -------------------

                              Comment


                              • #90
                                Bác CB cứ làm khó anh em .

                                Coi bộ những bài viết của CB rất là hữu ích, bác cứ phân tích nhiều những lỗi thường gặp như thế này nữa, thiệt là giúp ích cho anh em nhiều lắm.

                                Cám ơn bác nhiều.
                                Falleaf
                                Công ty TNHH Thương mại và Giao nhận R&P
                                58/57 Nguyễn Minh Hoàng - Phường 12 - Quận Tân Bình - TP.HCM
                                mail@falleaf.net - VP: (04) 36408561 - (08) 38119870

                                Comment

                                Về tác giả

                                Collapse

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

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

                                Collapse

                                Đang tải...
                                X