Thông báo

Collapse
No announcement yet.

Thực hành VHDL, mong mọi người giúp đỡ!!!

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

  • Thực hành VHDL, mong mọi người giúp đỡ!!!

    Trong quá trình học nội dung này, thời gian thì không có nhiều nhưng mình được giao một đề nài tập như thế này, mong mọi người tham khảo rồi nêu ý kiến đóng góp cho mình với, mình cảm ơn rất nhiều!
    Đề bài:
    Bài 6: Thiết kế module xử lý tín hiệu. Tín hiệu đầu vào là các tổ hợp 32-bit, với yêu cầu thực hiện các phép biến đổi như sau:
    Nén dữ liệu với các tham số đầu vào như sau:
    • N – Số lượng bit của mổi đơn vị khối dữ liệu đầu vào N: 2, 4, 8, 16, 32.
    • M – Số lượng bit của mỗi đơn vị khối dữ liệu đầu ra.(N  M). M: 2, 4, 8, 16, 32)
    Ví dụ N=8, M= 4
    Giá trị M, N được lưu trong các module. Các giá trị và tín hiệu phát sinh do người thiết kế tự bổ xung.

  • #2
    Nguyên văn bởi tuantuthan Xem bài viết
    Trong quá trình học nội dung này, thời gian thì không có nhiều nhưng mình được giao một đề nài tập như thế này, mong mọi người tham khảo rồi nêu ý kiến đóng góp cho mình với, mình cảm ơn rất nhiều!
    Đề bài:
    Bài 6: Thiết kế module xử lý tín hiệu. Tín hiệu đầu vào là các tổ hợp 32-bit, với yêu cầu thực hiện các phép biến đổi như sau:
    Nén dữ liệu với các tham số đầu vào như sau:
    • N – Số lượng bit của mổi đơn vị khối dữ liệu đầu vào N: 2, 4, 8, 16, 32.
    • M – Số lượng bit của mỗi đơn vị khối dữ liệu đầu ra.(N  M). M: 2, 4, 8, 16, 32)
    Ví dụ N=8, M= 4
    Giá trị M, N được lưu trong các module. Các giá trị và tín hiệu phát sinh do người thiết kế tự bổ xung.
    Câu hỏi của bạn là gì?

    Comment


    • #3
      Huong dan thuat toan

      Em mong mọi người đóng góp cho em thuật toán và chỉ cho em xem thực hiện như thế nào, có được các đoạn mã CODE thì càng tốt, không giống y hệt thì là những module có liên quan là được

      Comment


      • #4
        Mình đọc đề bài của bạn ko hiểu gì hết ... bạn nói thầy nào cho đề giải thích thêm đi.

        Comment


        • #5
          Thuat toan co ban

          Dữ liệu đầu vào của em là tối đa 32 bit va đầu ra cũng vậy, sẽ có các thành phần chính như sau:
          - thanh ghi M 6 bit đầu vào
          - thanh ghi N 6 bit đầu vào
          - thanh ghi 32 bit để chứa dữ liệu điều khiển bằng các xung CLK, VALID(xác nhận đủ 32 bit đầu vào)
          -dữ liệu được một pack xử lí rồi đưa ra ngoài
          -thanh ghi dịch đưa dữ liệu ra với VALID: xác nhận là đã đưa ra đủ 32 bit

          MOng mọi người hướng dẫn cho em về từng thành phần một của bài toán

          Comment


          • #6
            Nếu không lầm thì ko có thuật toán nén nào bảo đảm tỉ số nén được.

            Comment


            • #7
              Nói thật là đọc cái đề bài của bạn không hiểu gì hết cả. Ngoài ra như jefflieu comment, trong trường hợp tệ nhất thì dữ liệu nén ở đầu ra còn longer hơn đầu vào (do có thêm phần data dùng cho giải nén). Muốn thiết kế HW bạn phải clarify các specifications trong trường hợp của bạn là thuật toán nén, tốc độ của HW, phương thức trao đổi dữ liệu vào/ra (nối tiếp hay song song).

              Comment


              • #8
                Thuật toán

                Sau quá trình tham khảo thì em mong mọi người giúp đỡ cho em một số khúc mắc sau:
                - Dữ liệu đầu vào được lưu vào bộ nhớ Ram 32 bit như thế nào?
                - Muốn dịch thanh ghi đầu vào đi từng bit một theo xung clock thi dùng cách nào là tối ưu nhất
                - Dữ liệu đầu vào có tính cố định (cứ một bit mang tin la một bit không mang tin cần loại bỏ)nên có thể thực hiện cách lọc bit không mang tin như thế nào?
                - Dữ liệu đầu ra cũng được lưu trên thanh ghi 32 bit rồi khi đủ 32 bit thì mới đưa ra ngoài, như vậy thì ta phải tiến hành dịch thanh ghi như thế nào để cho dữ liệu trên thanh ghi là đúng thứ tự thời gian??
                Xin cảm ơn mọi người!

                Comment


                • #9
                  Nguyên văn bởi tuantuthan Xem bài viết
                  Sau quá trình tham khảo thì em mong mọi người giúp đỡ cho em một số khúc mắc sau:
                  - Dữ liệu đầu vào được lưu vào bộ nhớ Ram 32 bit như thế nào?
                  - Muốn dịch thanh ghi đầu vào đi từng bit một theo xung clock thi dùng cách nào là tối ưu nhất
                  - Dữ liệu đầu vào có tính cố định (cứ một bit mang tin la một bit không mang tin cần loại bỏ)nên có thể thực hiện cách lọc bit không mang tin như thế nào?
                  - Dữ liệu đầu ra cũng được lưu trên thanh ghi 32 bit rồi khi đủ 32 bit thì mới đưa ra ngoài, như vậy thì ta phải tiến hành dịch thanh ghi như thế nào để cho dữ liệu trên thanh ghi là đúng thứ tự thời gian??
                  Xin cảm ơn mọi người!
                  Khoan nói tới chuyện đầu vào được ghi vào RAM thế nào. Nói chuyện mô phỏng hoạt động của mạch trước:
                  1- muốn ghi dữ liệu vào một thanh ghi:
                  process(clK)
                  if(rising_edge(clk)) then
                  if(data_valid='1') then
                  thanh_ghi <= dulieu_vao;
                  end if;
                  end if
                  ...
                  2- Muốn dịch chuyển 1 thanh ghi:
                  process(clK)
                  if(rising_edge(clk)) then
                  if(data_valid='1') then
                  thanh_ghi <= thanh_ghi(thanh_ghi'left-1 downto 0) & '0'; --dịch trái
                  end if;
                  end if;

                  Nhưng ...
                  vẫn chưa hiểu bạn đang muốn làm gì ... khi nào bạn giải thích mọi người hiểu được chắc bạn sẽ làm được ...

                  Comment


                  • #10
                    Bổ sung

                    Chắc em cũng chưa hiểu kĩ lắm nên giải thích chưa đầy đủ, sau đây em xin bổ sung như sau:

                    Bài của em nhằm múc đích nén dữ liệu
                    Dữ liệu đầu vào luôn luôn là 32 bit, số bit mối khối phụ thuộc vào bit M
                    nếu M bằng 8, vậy đầu vào gồm 4 khối 8 bit
                    trong 8 bit đó, số bit mang dữ liệu phụ thuộc vào bit N
                    nếu N bằng 4, vậy có 4 bit đầu là mang dữ liệu, 4 bit sau bỏ
                    nếu N bằng 2, vậy có 2 bit đầu là mang dữ liệu, 6 bit sau bỏ
                    ...nếu N bằng 8 thì không bỏ bit nào
                    giờ thì module em cần nhất là xử lí dữ liệu, lọc lấy những bit mang dữ liệu, bỏ đi những bit không mang dữ liệu, với giá trị M, N bất kì
                    M, N=1,2,4,8,16,32(2^0-2^5) với M>=N
                    Đầu vào của khối:
                    -DATA-IN(32 bit)
                    -M
                    -N
                    Đầu ra:
                    -DATA-OUT
                    Mối xung CLK đến là xử lí xong 32 bit dữ liệu đầu vào và có 32/M*N bit đầu ra
                    Mong mọi người giúp em đoạn chương trình nhé!

                    Comment


                    • #11
                      Nguyên văn bởi tuantuthan Xem bài viết
                      Chắc em cũng chưa hiểu kĩ lắm nên giải thích chưa đầy đủ, sau đây em xin bổ sung như sau:

                      Bài của em nhằm múc đích nén dữ liệu
                      Dữ liệu đầu vào luôn luôn là 32 bit, số bit mối khối phụ thuộc vào bit M
                      nếu M bằng 8, vậy đầu vào gồm 4 khối 8 bit
                      trong 8 bit đó, số bit mang dữ liệu phụ thuộc vào bit N
                      nếu N bằng 4, vậy có 4 bit đầu là mang dữ liệu, 4 bit sau bỏ
                      nếu N bằng 2, vậy có 2 bit đầu là mang dữ liệu, 6 bit sau bỏ
                      ...nếu N bằng 8 thì không bỏ bit nào
                      giờ thì module em cần nhất là xử lí dữ liệu, lọc lấy những bit mang dữ liệu, bỏ đi những bit không mang dữ liệu, với giá trị M, N bất kì
                      M, N=1,2,4,8,16,32(2^0-2^5) với M>=N
                      Đầu vào của khối:
                      -DATA-IN(32 bit)
                      -M
                      -N
                      Đầu ra:
                      -DATA-OUT
                      Mối xung CLK đến là xử lí xong 32 bit dữ liệu đầu vào và có 32/M*N bit đầu ra
                      Mong mọi người giúp em đoạn chương trình nhé!
                      =============
                      Để nghị 1 cách làm:
                      Bạn có thể đặt 1 biến tạm: để chứa các block của bạn
                      Nhiều nhất là 32 block mỗi block 1 bit (M=32), ít nhất là 1 block chứa 32 bit (M=1)
                      block[i] = input((i+1)*(32/M)-1 downto i*(32/M))
                      Sau đó, các block của bạn sẽ được shift ra output,
                      output bit (i*N+N-1 downto N) = (Block[i] >> (M-N))

                      Comment


                      • #12
                        Thắc mắc

                        Anh cho em hỏi với, với cách làm như thế thì mình có phải thiết kế bộ nhân và chia bên ngoài để dùng trong chương trình không ạ
                        Em muôn viết chương trình đơn giản nhất có thể
                        em định dùng vòng lặp IF, hoắc CASE cho tất cả các trường hợp có thể xảy ra của M, N và đã lập thành bảng thực nhưng thấy dài quá, không biết có được không
                        còn nếu làm theo cách của anh thì anh có thể hướng dẫn cụ thể cho em được không a?

                        Comment


                        • #13
                          Bạn cứ vẽ sơ đồ khối rồi làm, rồi mô phỏng ... được hay không được tính sau.

                          Comment


                          • #14
                            Huong dan ACtive HDL

                            em dang dung mo phong Model sim
                            anh co tai lieu nao huong dan su dung phan mem Active HDL khong ah, em moi thu dung nhung chua mo phong duoc

                            Comment


                            • #15
                              Tại sao phải dùng Active HDL? dùng modelsim được rồi ... đừng sa đà vào set-up mấy cái software, mất thời gian lắm ... chủ yếu là học VHDL mà.

                              Comment

                              Về tác giả

                              Collapse

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

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

                              Collapse

                              Đang tải...
                              X