You are currently viewing MUSRA#7: Mã VHDL mức RTL bộ DMAC với chức năng sắp xếp một dãy số

MUSRA#7: Mã VHDL mức RTL bộ DMAC với chức năng sắp xếp một dãy số

RTL Design and VHDL code for the DMAC with a built-in Sorting Unit

VHDL CODE CAN BE DOWNLOAD HERE.

1. Mục tiêu

    Thiết kế mức RTL, mô hình hóa bằng VHDL, mô phỏng bằng ModelSIM và thực thi một bộ truy xuất bộ nhớ trực tiếp DMAC tích hợp đơn vị sắp xếp (Sorting Unit) một dãy số theo trật tự tăng hoặc giảm dần. Chức năng sắp xếp một dãy số theo trậ tự tăng dần được minh họa như được chỉ ra trong hình dưới.

Quá trình sắp xếp một dãy gồm 4 phần tử theo trật tự tăng dần

Hình 1. Ví dụ minh họa quá trình sắp xếp một dãy gồm 4 phần tử theo trật tự tăng dần.

2. Yêu cầu đối với thiết kế:

  • Giao diện vào ra tương thích với kiến trúc mảng tái cấu hình cấu trúc thô MUSRA 
  • Kích thước dãy số k, và độ rộng N-bit của mỗi phần tử của dãy số được khai báo như tham số cấu hình của thiết kế
  •  Sorting Unit có giao diện ghép nối với hệ thống vi xử lý như chỉ ra trong Hình 2 sao cho:
    • Đơn vị xử lý trung tâm (CPU) có thể viết k phần tử của dãy số cần phân loại
      tới bộ đệm bên trong của Sorting Unit.
    • Sau khi khởi tạo xong Sorting Unit, CPU sẽ kích hoạt quá trình tính toán của Sorting Unit bằng cách đặt tín hiệu Start = ‘1’
    • Sau khi Sorting Unit kết thúc quá trình sắp xếp nó báo cho CPU biết bằng cách đặt tín hiệu Done = ‘1’; Sorting Unit cần giữ trạng thái này cho đến khi Start = 0.
    • Khi Done = ‘1’, CPU có thể tiến hành đọc mảng dữ liệu đã được sắp xếp từ Sorting Unit
    • Sau khi kết thúc đọc dữ liệu từ Sorting Unit, CPU xóa tín hiệu Start = 0 để báo phiên làm việc của Sorting Unit đã kết thúc.

Giao diện ghép nối I/O của đơn vị Sorting Unit

Hình 2. Giao diện ghép nối I/O của đơn vị Sorting Unit.

Định nghĩa giao diện vào/ra:

Bảng 1: Mô tả các tín hiệu vào ra của đơn vị sắp xếp.

Mô tả các tín hiệu vào ra của đơn vị sắp xếp.

3. Thuật toán sắp xếp

Bảng 2. Mã giả (Pseudo code) mô tả thuật toán.

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

this algorithm is right for any K≥2

[initialize input data]

Beginning: wait for start = ‘1’

Done = ‘0’

for i=0 to k-2 do

            A= Mi

            for j=i+1 to k-1 do

                        B = Mj

                        if A > B then

                                    Mi = B

                                    Mj = A

                                    A = Mi

                        end if

            end for

end for

Done = ‘1’

wait for start = ‘0’

go to the beginning

End

Máy trạng thái FSMD mô tả thuật toán

Hình 3: Máy trạng thái FSMD mô tả thuật toán.

4. Kiến trúc RTL của mạch sắp xếp

4.1 Thiết kế mạch điện thực hiện chức năng xử lý dữ liệu trong đơn vị sắp xếp

Thiết kế Datapath của mạch sắp xếp dãy số

Hình 4: Thiết kế Datapath.

4.2 Thiết kế máy trạng thái thực hiện chức năng điều khiển trong đơn vị sắp xếp

Máy trạng thái FSM mạch điều khiển bộ sắp xếp

Hình 5: Máy trạng thái FSM.

 

5. Mô tả thiết kế bằng ngôn ngữ mô tả phần cứng VHDL

  Down load mã nguồn VHDL ở đây. Hoặc liên hệ với tác giả theo địa chỉ email lsidesign1688@gmail.com để nhận mã nguồn VHDL.

Mã nguồn VHDL mô tả thiết kế bộ sắp xếpHình 7. Mã nguồn VHDL mô tả thiết kế bộ sắp xếp

6. Mô phỏng thiết kế với bộ mô phỏng ModelSim

Kết quả mô phỏng bộ sắp xếp với ModelSIM

Hình 8: Kết quả mô phỏng.

Phân tích kết quả mô phỏng: 
    Khung màu đỏ trong hình 8 chỉ ra chuỗi dữ liệu đầu vào gồm 4 phần tử có giá trị 3, 1, 4, 2. Sau thời gian sắp xếp ta có được chuỗi dữ liệu đầu ra gồm 4 phần tử tương ứng nhưng đã được sắp xếp theo trật tự tăng dần như chỉ ra trong khung màu xanh của Hình 8.

   Quá trình sắp xếp được điều khiển bởi xung start bắt đầu từ thời điểm 460ns và kết thúc tại thời điểm 1612ns. Vì chu kì clock được thiết lập trong testbench là 20ns, nên tổng số chu kỳ được dùng để hoàn thành quá trình sắp xếp là (1600-460)/20 = 57 chu kỳ.

Nguyễn Kiêm Hùng

Hung K. Nguyen studied “Electronic Engineering” in both his bachelor’s and master’s degrees at the Vietnam National University, Hanoi, Vietnam. He received the bachelor’s degree in 2003. After receiving his bachelor’s degree, He worked as an internship in the Research Center of Electronics and Telecommunications. In 2006, He received the master’s degree in electronic engineering from VNU University of Engineering and Technology (VNU-UET). Before pursuing his Ph.D’s degree, He worked as a researcher at the Laboratory for Smart Integrated Systems in VNU University of Engineering and Technology for two years. In 2008, He went to Southeast University, Nanjing, China to get his Ph.D degree. He received the Ph.D. degree in Microelectronics and Solid State Electronics from Southeast University in 2013. After got his Ph.D’s degree, He returned to VNU University of Engineering and Technology to continue his research in VLSI design. He works currently as an assistant professor and senior researcher at VNU Key Laboratory for Smart Integrated Systems. His research interests mainly include multimedia processing, reconfigurable computing, and SoC designs.

Trả lời