Thông báo

Collapse
No announcement yet.

help:design CPU bằng verilog

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

  • help:design CPU bằng verilog

    có bạn nào đã học qua lớp altera 2 chưa?cụ thể giờ mình đang làm lab 9,10 của altera,bạn nào có làm rồi thì hướng dẫn hoặc up file mình tham khảo nhé,thanks all

  • #2
    Hình như bác đang nói tới bài lab của lớp bên icdrec à? Bác ko đưa đề lên thì đâu ai biết mà giúp.
    Chuyện nhỏ như con thỏ,bắt thỏ mới là chuyện lớn!!!

    Comment


    • #3
      đúng rồi đó bác,lab9,lab 10 của lớp ICDREC.ai biết thì giúp nha,mình up luôn 2 file lên cho các bác tiện tham khảo.
      Attached Files

      Comment


      • #4
        ặc,viết nguyên con CPU cho bác á
        Em nói sơ sơ bước trước tiên là kết nối tất cả các component của datpath lại theo sơ đồ mà nó cho ấy, các component này (register,addsub,mux,...) thì chắc bác viết trong các lad trước rùi, có sơ đồ sẵn thì cứ port map là ổn hết. Còn cái ControlUnit thì viết sau, căn cứ vào các lệnh trogn tập lệnh của nó, thường là dùng FSM. Thường mấy con đơn giản này thì mỗi lệnh một state, thêm 1 state start, 1 state fetch, 1 state decode nữa chắc là ổn.
        Tốt nhất là bác code rùi có gì sai thì gửi code lên anh em sửa chứ còn yêu cầu luôn code ăn liền như bác thì chỉ tổ bị ...

        ps: đọc kĩ mới thấy nó code hết trong file pdf rùi mà,bác định hỏi cái gì nữa vậy
        Chuyện nhỏ như con thỏ,bắt thỏ mới là chuyện lớn!!!

        Comment


        • #5
          sorry vì nói chung quá,phần code thì ok rồi, bác có thể nói rõ hơn phần table 2 không?cái này hiểu không rõ lắm.

          Comment


          • #6
            Nguyên văn bởi nguyentuantu Xem bài viết
            bác có thể nói rõ hơn phần table 2 không?cái này hiểu không rõ lắm.
            Chỗ nào vậy bác?
            Chuyện nhỏ như con thỏ,bắt thỏ mới là chuyện lớn!!!

            Comment


            • #7
              Trong lab 9 có 2 cái bảng đó bác,2 cái table,ở cái table 2 slide 2.thanks bác

              Comment


              • #8

                Bác nói cái này phải ko?
                Đây là bảng liệt kê các ControlSignal và giá trị của chúng tại các state khác nhau của FSM của ControlUnit.
                Ở đây giả sử bác đã decode xong và biết nó là lệnh gì (vì mã lệnh có cấu trúc hết rùi), sau đó thì rẽ nhánh ra các trạng thái khác nhau ứng với các lệnh:
                mv,mvi,add,sub
                Em ví dụ ô đầu tiên của bảng, ứng với lệnh mv để chuyển data từ thanh ghi RY qua RX. Nó ghi là RyOut, RxIn, có nghĩa là bác phải set các controlsignal sao cho out được Ry ra bus và cho Rx load dc giá trị từ bus. Rx và Ry là gì thì bác đã decode dc từ mã lệnh rùi (IIIXXXYYY). Tức là bác phải cho cái multiplexer đưa giá trị của Ry ra bus. Còn Rx thì bác assert cái Load của nó. Vậy là xong lệnh mv rùi đó, nó ghi thêm Done tức là bác phải high cái Done lên để cho người ta biết là xong.
                Tương tự cho các ô còn lại, lệnh mv chỉ cần một bước (ứng với T1) là xong, còn các lệnh kia thì tốn nhiều bước hơn (ứng với T1,T2,T3), bác cứ cho mỗi bước một state và set đúng các controlsignal ở từng bước là được. Khi nào xong thì post lên cho anh em học hỏi nhá.
                Còn đây là sơ đồ FSM của controlunit sơ lược của bài 9
                Attached Files
                Chuyện nhỏ như con thỏ,bắt thỏ mới là chuyện lớn!!!

                Comment


                • #9
                  Thanks bác,vậy là ok rồi,e đang hoàn thiện lab 9,có gì post lên bác cho ý kiến.

                  Comment


                  • #10
                    nhờ bác tiếp đây,đang làm thì vướng cái clear của cái counter,bác nhìn trong figure1,ở phía dưới cùng.
                    Phải gán clear sao đây?e hiểu chức năng of nó nhưng không nghĩ ra giải thuật sao để nó thực hiện.
                    Nếu thực hiện lệnh mv,mvi thì clear từ 00 lên 01 và về 00 lại,còn add và sub thì nó đi hết vòng đếm 2 bit.
                    Như trong figure2a,skeleton hướng dẫn nó gán clear =.....?không biết gán sao luôn
                    Thanks bác!

                    Comment


                    • #11
                      em cũng chả hiểu cái counter đó để làm gì nữa, vì lâu nay em toàn làm theo kiểu FSM thôi,cứ mỗi trạng thái thì phang cotrolsignal tương ứng vô là được. Còn như trong lab đó thì em đoán (đoán thôi nhá, vì em mù verilog) là thế này:
                      Cái counter đó để xác định các trạng thái T1,T2,T3 trong table 2 (vì counter này có 2 bits),và nó được xóa khi bác làm xong một lệnh nào đó, ví dụ như nếu là lệnh mv thì xóa ngay trong T1, khi xóa xong thì nó sẽ trở về ban đầu và thực hiện lệnh tiếp theo được đưa đến.
                      Code:
                      always @(Tstep_Q or I or Xreg or Yreg) begin
                      ... specify initial values 
                      case (Tstep_Q)
                      2’b00: // store DIN in IR in time step 0 begin IRin = 1’b1; end 2’b01: //define signals in time step 1 case (I) ... endcase 2’b10: //define signals in time step 2 case (I) ... endcase 2’b11: //define signals in time step 3 case (I) ... endcase
                      endcase end
                      ở đây tstep_q là đầu ra của counter và được select-case để đưa đến trạng thái phù hợp,tiếp đó ta lại select-case tiếp xem lệnh nào đang được thưc thi.Như vậy bác sẽ đặt câu lệnh để clear ở các vị trí thích hợp. Ví dụ như tsep_q đang là 2'b00, tức là trạng thái T1, nếu ta thấy I biểu diễn lệnh mv thì sau khi xong việc ta clear counter luôn, còn nếu I biểu diễn lệnh add thì chưa clear dc...
                      Cái này thì bác phải nhờ cao thủ thôi,em gà lắm, nói bừa vài câu không biết sai không nữa
                      Chuyện nhỏ như con thỏ,bắt thỏ mới là chuyện lớn!!!

                      Comment


                      • #12
                        Tạm thời e xong phần code của part 1,nhưng chưa ok lắm,bác xem thử ngõ vào thanh ghi lệnh IR lấy 9 bit từ ngõ vào DIN 16 bit,nhưng khi tổng hợp ra sơ đồ RTL thì nó ghi ngõ vào là 15'NC là sao?cái này e chịu.bác giải thích giùm
                        ps:sao up lên nó mờ thế không biết,bác chịu khó nhìn vào ngõ vào DIN là cái tín hiệu thứ 2 từ trên xuống của 4 tín hiệu bên trái hình vẽ.nó nối với thanh ghi IR sát bên cạnh,cái chỗ ngõ vào thanh ghi bác thấy 1 chỗ đen đen mờ mờ là nó ghi 15'NC,bác giải thích giùm
                        -----e nói luôn phòng khi bác không biết,,nhấn giữ phím ctrl và lăn bi chuột để phóng bự hình ra
                        Attached Files

                        Comment


                        • #13
                          Nguyên văn bởi nguyentuantu Xem bài viết
                          nhấn giữ phím ctrl và lăn bi chuột để phóng bự hình ra
                          Cái nì thì em biết
                          Nguyên văn bởi nguyentuantu Xem bài viết
                          Tạm thời e xong phần code của part 1,nhưng chưa ok lắm,bác xem thử ngõ vào thanh ghi lệnh IR lấy 9 bit từ ngõ vào DIN 16 bit,nhưng khi tổng hợp ra sơ đồ RTL thì nó ghi ngõ vào là 15'NC là sao?cái này e chịu.bác giải thích giùm
                          ps:sao up lên nó mờ thế không biết,bác chịu khó nhìn vào ngõ vào DIN là cái tín hiệu thứ 2 từ trên xuống của 4 tín hiệu bên trái hình vẽ.nó nối với thanh ghi IR sát bên cạnh,cái chỗ ngõ vào thanh ghi bác thấy 1 chỗ đen đen mờ mờ là nó ghi 15'NC,bác giải thích giùm
                          Cái nì thì chịu, mờ tịt tù lù, căng mắt ra cũng chả thấy gì, sao bác ko up lên cái host nào khác í. Mà bác nói chưa ok là sao? Cứ viết chương trình bằng mã máy rùi nạp vào rom coi nó chạy đúng ko là dc mà. Nếu ko thì cứ thay đổi các controlsignal xem có đúng tác dụng ko...
                          ps:nói chay vậy mệt quá,tốt nhất là bác post code lên, sẽ có nhiều cao thủ giúp hơn đấy.
                          Chuyện nhỏ như con thỏ,bắt thỏ mới là chuyện lớn!!!

                          Comment


                          • #14
                            phần lab 10 là CPU nâng cao,lúc này thanh ghi R7 được sử dụng như bộ đếm chương trình (pc).bác giải thích giùm e đoạn này,dịch hiểu được mù mờ quá.


                            ----------
                            The processor’s control unit increments PC by using the incr_PC signal, which is just an enable on this counter.
                            It is also possible to directly load an address into PC (R7) by having the processor execute a mv or mvi instruction
                            in which the destination register is specified as R7. In this case the control unit uses the signal R7 in to perform
                            a parallel load of the counter. In this way, the processor can execute instructions at any address in memory, as
                            opposed to only being able to execute instructions that are stored in successive addresses. Similarly, the current
                            contents of PC can be copied into another register by using a mv instruction. An example of code that uses the
                            PC register to implement a loop is shown below, where the text after the % on each line is just a comment. The
                            instruction mv R5,R7 places into R5 the address in memory of the instruction sub R4,R2. Then, the instruction
                            mvnz R7,R5 causes the sub instruction to be executed repeatedly until R4 becomes 0. This type of loop could be
                            used in a larger program as a way of creating a delay.
                            mvi R2,#1
                            mvi R4,#10000000 % binary delay value
                            mv R5,R7 % save address of next instruction
                            sub R4,R2 % decrement delay count
                            mvnz R7,R5 % continue subtracting until delay count gets to 0

                            -----------------------
                            tại sao lại tạo ra được vòng lặp như vậy nhỉ?

                            Comment


                            • #15
                              đây là code của phần 1 lab 9.Em làm ra thì sơ đồ RTL thấy ok nhưng mô phỏng không ra gì cả.Các bác xem rồi cho ý kiến giúp e.thanks các bác nhiều.
                              Attached Files

                              Comment

                              Về tác giả

                              Collapse

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

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

                              Collapse

                              Đang tải...
                              X