Thông báo

Collapse
No announcement yet.

Thắc mắc trong Verilog?

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

  • Thắc mắc trong Verilog?

    E chào các bậc tiền bối đi trước, em đang học verilog và có một số câu hỏi sau, mong được sự giải đáp của các Anh/Chị:
    1. Mô tả mạch sử dụng các hàm bool là mô hình gì? (Structure, RTL, Behavior? ...). Chú pháp and A0(out,in1,in2,in3...) là mô hình gì?
    2.Verilog tìm các module con trong file module ở đâu?
    3.Mô tả quá trình tổng hợp vi mạch số. (Tổng hợp đến mức transistor hay tổng hợp đến mức cổng tùy công nghệ? )
    4. Điều kiện của biến đếm để vòng lặp có thể dừng lại (vd cú pháp so sánh trong vòng for là <= 32 nhưng biến đếm chỉ có 5 bit -> lặp vô hạn)
    5. Delay truyền dẫn giữa đầu vào và đầu ra của cổng NOT phụ thuộc những tham số nào?
    6. Phương pháp testbench nào phát hiện được tất cả các lỗi. Phương pháp testbench sử dụng kịch bản sử dụng có các ưu điểm gì
    7. $readmemb đọc như thế nào? (có đọc theo số 32 bit không?)
    8. Mặc định hằng số trong verilog là kiểu dữ liệu gì?
    Em xin chân thành cảm ơn ạ!

  • #2
    không ai giúp Em à.

    Comment


    • #3
      Mình nghi ngờ mục đích hỏi của bạn quá ... bạn đang làm gì mà hỏi mấy cái này? Cảm giác như bạn giải bài tập, thầy hỏi, không phải bạn hỏi.
      Thôi bạn hỏi từng cái đi, cái nào bạn chưa hiểu, hoặc bạn muốn kiểm chứng xem bạn hiểu đúng không thì bạn hỏi.

      Comment


      • #4
        Nguyên văn bởi jefflieu Xem bài viết
        Mình nghi ngờ mục đích hỏi của bạn quá ... bạn đang làm gì mà hỏi mấy cái này? Cảm giác như bạn giải bài tập, thầy hỏi, không phải bạn hỏi.
        Thôi bạn hỏi từng cái đi, cái nào bạn chưa hiểu, hoặc bạn muốn kiểm chứng xem bạn hiểu đúng không thì bạn hỏi.
        luôn luôn nghi ngờ và đừng bao giờ nghi ngờ rằng mình đang nghi ngờ - vâng, bác nghi ngờ gần đúng ạ, đây là bài thi vừa rồi.
        E cũng đã làm hết bài tập đó rồi, bọn E vừa thi xong môn này xong nhưng chưa biết kết quả, nên lên đây hỏi để so sánh kết quả và xem mình sai ở chỗ nào thôi, nếu vi phạm diễn đàn thì Mod có thể xóa bài ạ, còn nếu anh em nào cùng muốn trao đổi thì có thể trả lời và xin mod giữ bài lại, em xin cảm ơn.

        Comment


        • #5
          Mình không thích xóa bài đâu bạn, yên tâm.

          ... mình thi chắc mình cũng rớt rồi ... mình toàn tra google không àh ...
          1) Biết làm chi, không quan trọng
          2) Tùy phần mềm biên dịch, thường là work
          3) Google
          4) Trong Verilog không có khái niệm lập vô hạn
          5) Không biết, những mỗi người sẽ trả lời mỗi kiểu, tùy thuộc vào độ hiểu biết của người đó về mạch số ở mức cổng
          6) Không có phương pháp nào
          7) Tra google đi bạn, nhớ làm gì
          8) Trong Verilog, thật ra không có khái niệm kiểu dữ liệu, chỉ là 0 với 1 thôi

          mình cũng không chắc câu trả lời là "giống đáp án" đâu nhé ...
          Bạn thấy câu trả lời nào không ổn thì hỏi tiếp

          Comment


          • #6
            Mình mà ra đề sẽ hỏi bạn mấy cái này: Only-VLSI: Verilog Interview Questions - 3

            Comment


            • #7
              hi thanks anh @jeffieu, chắc E cũng ko qua được môn này rồi,
              E cũng google search nhiều lắm chứ, verilog sách nước ngoài viết rất hay, E cũng có một câu này muốn hỏi anh
              tìm sự khác nhau giữa hàm hiển thị $monitor, $display và $strobe,
              theo em tìm hiểu thì
              $display và $strobe hiển thị mỗi khi nó được thực hiện, còn $monitor hiển thị mỗi khi một trong các thành phần hay thông số của nó thay đổi
              và $trobe hiển thị các thông số ở cuối của đơn vị thời gian mô phỏng hiện tại chứ không phải là chính xác nơi nó được thực thi,
              theo ý kiến của Anh thì thế nào ạ?

              Comment


              • #8
                Nguyên văn bởi hoangclick Xem bài viết
                hi thanks anh @jeffieu, chắc E cũng ko qua được môn này rồi,
                E cũng google search nhiều lắm chứ, verilog sách nước ngoài viết rất hay, E cũng có một câu này muốn hỏi anh
                tìm sự khác nhau giữa hàm hiển thị $monitor, $display và $strobe,
                theo em tìm hiểu thì
                $display và $strobe hiển thị mỗi khi nó được thực hiện, còn $monitor hiển thị mỗi khi một trong các thành phần hay thông số của nó thay đổi
                và $trobe hiển thị các thông số ở cuối của đơn vị thời gian mô phỏng hiện tại chứ không phải là chính xác nơi nó được thực thi,
                theo ý kiến của Anh thì thế nào ạ?
                Mình mới search google thì mình thấy bạn nói đúng ... Mình hiếm khi dùng strobe và monitor, vì đã có phần mềm hiển thị waveform nên mình chỉ check trên đó thôi. Không dùng monitor.

                Điều quan trọng cần hiểu là khái niệm "đơn vị thời gian mô phỏng". Các ví dụ statement sau:
                initial
                begin
                a = 1'b1;
                b = 1'b1;
                for(I=0;I<10;I=I+1)
                $display("%d...",a);
                $strobe("%d...",a);
                a = 1'b0;

                end

                Các statement sẽ được simulator thực hiện từ trên xuống dưới nhưng trong cùng 1 đơn vị thời gian mô phỏng, kể cả vòng lặp, các câu lệnh này "không tốn thời gian" để thực hiện. Câu lệnh display sẽ được thực hiện "trước" câu lệnh a = 1'b0 nhưng đều tại thời điểm 0 ns.

                Còn strobe sẽ thực hiện sau cùng, theo như người ta nói thì strobe sẽ in ra "0", $display sẽ in ra "1"

                Hơi lộn xộn, nhưng bạn làm thực hành từ từ sẽ hiểu.

                Simulator sẽ thực hiện theo simulation step. Ví dụ step 0: từ 0 tới 100ps, step 1 từ 100ps tới 200ps ...
                Mỗi step có một số statement cần thực hiện. Simulator sẽ thực hiện theo trình tự định sẵn của Verilog theo quy luật của các statement (block, unblock ...).

                Comment


                • #9
                  hi, thanks Anh, đúng là chỉ có thực hành và làm nhiều thì mới ngộ ra nhiều cái hay mà lý thuyết không nói được,
                  E giờ đang cày các môn khác nên cũng không có nhiều thời gian tìm hiểu thêm,hi.
                  topic của E có thể close được rồi anh ạ./ sau có gì không hiểu e lại lên đây hỏi anh [MENTION=19993]jefflieu[/MENTION] tiếp.

                  Comment


                  • #10
                    Ok, closed.

                    Comment


                    • #11
                      Nguyên văn bởi jefflieu Xem bài viết
                      Mình không thích xóa bài đâu bạn, yên tâm.

                      ... mình thi chắc mình cũng rớt rồi ... mình toàn tra google không àh ...
                      1) Biết làm chi, không quan trọng
                      2) Tùy phần mềm biên dịch, thường là work
                      3) Google
                      4) Trong Verilog không có khái niệm lập vô hạn
                      5) Không biết, những mỗi người sẽ trả lời mỗi kiểu, tùy thuộc vào độ hiểu biết của người đó về mạch số ở mức cổng
                      6) Không có phương pháp nào
                      7) Tra google đi bạn, nhớ làm gì
                      8) Trong Verilog, thật ra không có khái niệm kiểu dữ liệu, chỉ là 0 với 1 thôi

                      mình cũng không chắc câu trả lời là "giống đáp án" đâu nhé ...
                      Bạn thấy câu trả lời nào không ổn thì hỏi tiếp


                      Xin hoi bac Jefflieu : Với một ngôn ngữ lập trình thông thường, có ngôn ngữ nào mà không có kiểu dữ liệu nhỉ ? Verilog cũng không là ngoại lệ, nó có cũng có kiểu dữ liệu là wire và reg.
                      Kiểu wire : như cái tên của nó , có ý nghĩa như 1 cái dây vật lý dùng để kết nối các cổng logic.
                      Kiểu reg : (reg : register ) : hơi khó diễn tả: dùng trong các câu lệnh gán của lệnh always @() .

                      Phiền bác tìm lại trên google câu này nhé.
                      Các câu khác em chưa có kiến thức lên chưa dám comment ở đây

                      Comment


                      • #12
                        Nguyên văn bởi tuyenkhuc Xem bài viết
                        Xin hoi bac Jefflieu : Với một ngôn ngữ lập trình thông thường, có ngôn ngữ nào mà không có kiểu dữ liệu nhỉ ? Verilog cũng không là ngoại lệ, nó có cũng có kiểu dữ liệu là wire và reg.
                        Kiểu wire : như cái tên của nó , có ý nghĩa như 1 cái dây vật lý dùng để kết nối các cổng logic.
                        Kiểu reg : (reg : register ) : hơi khó diễn tả: dùng trong các câu lệnh gán của lệnh always @() .

                        Phiền bác tìm lại trên google câu này nhé.
                        Các câu khác em chưa có kiến thức lên chưa dám comment ở đây
                        Ừ, bạn nói đúng.

                        Comment


                        • #13
                          Chào các bác!
                          Các bác giải thích ý nghĩa câu lệnh này giúp em được không ah? Em không học verilog nên tự tìm hiểu khó quá.
                          @(timer(0,period)) val_clk =0;

                          Comment


                          • #14
                            Nguyên văn bởi PETERPRO Xem bài viết
                            Chào các bác!
                            Các bác giải thích ý nghĩa câu lệnh này giúp em được không ah? Em không học verilog nên tự tìm hiểu khó quá.
                            @(timer(0,period)) val_clk =0;

                            Chào bạn,
                            Vì bạn chỉ viết có 1 câu như thế nên mình cũng không hiểu tường tận được. Ít ra nếu hiểu một cách cực đoan thì dòng code của bạn nghĩa là: chờ cho giá trị của timer(0, period) thay đổi thì gán 0 cho val_clk.

                            Comment

                            Về tác giả

                            Collapse

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

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

                            Collapse

                            Đang tải...
                            X