Xây dựng hệ thống mô phỏng và kiểm chứng cho bộ mã hoá tín hiệu video H.264/AVC
Sự phức tạp của hệ thống mã hoá tín hiệu
video H.264/AVC đã dẫn tới nhiều khó khăn trong việc
kiểm tra, kiểm chứng và kiểm thực các thiết kế ở mức hệ
thống của bộ mã hoá này. Những khó khăn chúng tôi gặp
phải khi thiết kế và thực thi hệ thống này là việc quản lý
các kịch bản kiểm tra; thay đổi các tham số của hệ thống
và của kịch bản kiểm tra; và thời gian chạy mô phỏng lâu
đối với các tập dữ liệu dùng để kiểm tra và kiểm chứng
hệ thống, đặc biệt là khi hệ thống được ghép nối với một
hệ thống trên chip (System-on-chip). Trong báo cáo này,
chúng tôi trình bày một phương pháp xây dựng hệ thống
mô phỏng và kiểm chứng ở mức hệ thống bộ mã hoá tín
hiệu video H.264/AVC dựa trên việc thiết kế kịch bản kiểm
tra và kiểm chứng tối giản và linh động, kết hợp với các
phần mềm mã nguồn mở sẵn có như GNU Make, ngôn
ngữ Python để tạo thành một hệ thống kiểm tra và kiểm
chứng tự động, cho phép tự động mô phỏng thiết kế từ
mức hành xử cho đến mức cổng lô-gíc. Hệ thống này cho
phép chạy nhiều mô phỏng tại cùng một thời điểm với các
kịch bản kiểm tra khác nhau. Nhờ việc này, chúng tôi đã
giảm được thời gian chạy mô phỏng từ 2 đến 10 lần phụ
thuộc vào khả năng của máy chạy mô phỏng. Kịch bản
kiểm tra được thực hiện trên VHDL để kiểm tra thiết kế
của bộ mã hoá tín hiệu video H.264/AVC thực thi trên
công nghệ 130nm của hãng Global Foundry.
Trang 1
Trang 2
Trang 3
Trang 4
Trang 5
Trang 6
Tóm tắt nội dung tài liệu: Xây dựng hệ thống mô phỏng và kiểm chứng cho bộ mã hoá tín hiệu video H.264/AVC
hoá sẽ sử dụng bộ nhớ này để lưu các ảnh dự đoán cũng như video gốc trong quá trình mã hoá. Hình 3. Kiến trúc của hệ thống kiểm tra được đề xuất. Hình 3 miêu tả hệ thống đề xuất để kiểm tra và kiểm chứng lõi mã hoá H.264/AVC VENGME. Mô hình được xây dựng dựa trên các khối có sẵn trong thư viện GRLIB [8] nhưng được tích hợp thêm lõi mã hoá H.264/AVC và lõi làm nhiệu vụ kiểm chứng hay còn gọi là Verification IP. Hệ thống này bao gồm: • Bộ mã hoá H.264/AVC đã được thiết kế: Thiết kế cần kiểm chứng (Design Under Test – DUT) • DDR2 Memory model: mô hình DDR2 SDRAM • AHB_VIP: có chức năng đọc nội dung video cần mã hoá từ một file video (ví dụ fore- man_qcif.yuv), sau đó copy nội dung này vào DDR2 SDRAM theo từng khung hình để chuẩn bị cho quá trình mã hoá; cài đặt các tham số và Hội thảo quốc gia 2014 về Điện tử, Truyền thông và Công nghệ thông tin (ECIT2014) ISBN: 978-604-67-0349-5 393 kích hoạt quá trình hoạt động của bộ mã hoá H.264/AVC. Mô hình AHB_VIP được mô hình hoá sử dụng ngôn ngữ VHDL, được tham số hoá sử dụng các tham số dưới dạng generic để có thể thay đổi kịch bản kiểm tra mà không cần phải biên dịch lại thiết kế. Các tham số này sẽ được thay đổi tại thời điểm bắt đầu chạy mô phỏng. Định dạng của kịch bản kiểm tra sẽ được trình bày trong phần III-B. Ngoài ra, bộ mã hoá cũng được xây dựng với một số tham số khác tương tự như cách mô hình hoá AHB_VIP đễ hỗ trợ việc kiểm tra từng chức năng, từ chế độ mã hoá, và trích xuất dữ liệu phục vụ mục đích gỡ rối (debug) quá trình mã hoá. A. Mô hình AHB_VIP Bộ mã hoá tín hiệu video không đọc trực tiếp dữ liệu video gốc. Việc này được thực hiện bởi khối kiểm chứng thiết kế AHB_VIP. Khối này có thể đóng vai trò như một bộ xử lý để thực hiện việc sao chép dữ liệu video gốc lên trên bộ nhớ, thiết lập các chế độ hoạt động cho bộ mã hoá, trước khi kích hoạt bộ mã hoá. Khối này cũng đảm nhiệm việc xử lý ngắt khi bộ mã hoá đã hoàn thành mã hoá một chuỗi video. Các bước điều khiển bộ mã hoá H.264/AVC VENGME để thực hiện mã hoá một tập tin video được lập trình trong AHB_VIP như sau: 1) AHB_VIP đọc các khung hình ảnh từ video gốc vào bộ nhớ DDR RAM. Số lượng khung hình ảnh được đọc vào bộ nhớ có thể cấu hình qua tham số của kịch bản kiểm tra để tiết kiệm bộ nhớ. 2) AHB_VIP ghi các tham số cho quá trình mã hoá (kích thước khung hình, địa chỉ lưu giữ các khung hình đã được tái tạo, kết quả sau khi mã hoá, hệ số lượng tử hoá v.v. . . ) vào các thanh ghi của bộ mã hoá H.264/AVC. 3) AHB_VIP kích hoạt quá trình mã hoá bằng cách đặt bit ‘enable’ trong thanh ghi điều khiển lên ‘1’. 4) AHB_VIP chờ ngắt từ bộ mã hoá H.264/AVC để thông báo kết thúc mã hoá một khung hình hoặc một chuỗi khung hình. 5) Sau khi quá trình mã hoá kết thúc, AHB_VIP đọc dữ liệu hình ảnh đã được mã hoá, và viết ra tập tin văn bản. Sau khi quá trình mã hoá hoàn tất, các tập tin được trích xuất ra ngoài trong quá trình mô phỏng sẽ được phân tích để đánh giá hiệu quả mã hoá và kiểm tra lỗi. Tập tin dữ liệu đã được mã hoá ở đầu ra sẽ được giải mã bằng phần mềm tham chiếu JM [9] của chuẩn mã hoá tín hiệu video H.264/AVC để chứng minh dữ liệu đã được mã hoá tuân theo chuẩn nén tín hiệu Video H.264/AVC. AHB_VIP cũng có thể dừng chương trình mô phỏng trong trường hợp thời gian mô phỏng vượt quá một ngưỡng cho phép được đặt bởi người thiết kế. Việc này sẽ giúp giảm thời gian mô phỏng và nhanh chóng xác định nguyên nhân gây lỗi và tiết kiệm thời gian mô phỏng. B. Kịch bản kiểm tra Kịch bản kiểm tra là một tập tin văn bản với các tham số của các tín hiệu video đầu vào và các tham số của quá trình mã hoá. Dựa vào các kịch bản kiểm tra này, chương trình Make [10] sẽ sinh ra các cấu hình tương ứng để thay đổi các tham số của AHB_VIP tại thời điểm gọi chương trình mô phỏng. Ứng với mỗi kịch bản kiểm tra sẽ có một tập tin đầu ra. Tập tin lưu kịch bản kiểm tra có dạng _.cfg ví dụ: forman_qcif.cfg. Một số cấu hình quan trọng của một kịch bản kiểm tra điển hình có dạng như sau: CFG_VIP_FILENAME=foreman_qcif.yuv CFG_VIP_FM_W=176 CFG_VIP_FM_H=144 CFG_VIP_INIT_QP=6 CFG_VIP_GOP_M=4 CFG_VIP_GOP_N=2 CFG_VIP_FMENC=5 CFG_VIP_IRQ_EN=1 CFG_VIP_CMB_NFM=2 • CFG_VIP_FILENAME là đường dẫn đến tập tin video gốc. • CFG_VIP_FM_W × CFG_VIP_FM_H là độ phân giải của video gốc. • CFG_VIP_INIT_QP là tham số lượng tử hoá trong chuẩn H.264/AVC (giá trị từ 0 đến 54). • Hai tham số CFG_VIP_GOP_M và CFG_VIP_GOP_N là hai tham số quy định định dạng của một nhóm hình ảnh (Group of Pictures). • CFG_VIP_FMENC là số khung hình ảnh sẽ được mã hoá. Tham số này phải nhỏ hơn hoặc bằng số khung hình ảnh thực có trong tập tin video gốc. • CFG_VIP_IRQ_EN cho phép kích hoạt ngắt trong bộ mã hoá. • CFG_VIP_CMB_NFM là số khung hình ảnh từ video gốc sẽ được nạp lên bộ nhớ. Sau khi mã hoá xong CFG_VIP_CMB_NFM khung hình ảnh, AHB_VIP sẽ nạp thêm số CFG_VIP_CMB_NFM khung hình mới vào bộ nhớ và kích hoạt bộ mã hoá tiếp tục mã hoá các khung mới cho đến khi số khung hình được mã hoá đạt đến số khung hình trong CFG_VIP_FMENC. Hội thảo quốc gia 2014 về Điện tử, Truyền thông và Công nghệ thông tin (ECIT2014) ISBN: 978-604-67-0349-5 394 Bằng cách sử dụng kịch bản kiểm tra, các tập tin kết quả sẽ được sinh ra dựa trên các kịch bản kiểm tra. Kịch bản kiểm tra cũng có thể được sinh ra một cách tự động từ đó quá trình mã hoá có thể được tự động hoá đến mức tối đa. Một ưu điểm khác của kịch bản kiểm tra là có thể chạy song song nhiều kịch bản kiểm tra mà không sợ bị xung đột dữ liệu. Các tham số trong quá trình mô phỏng sẽ được thiết lập dựa vào các kịch bản kiểm tra. C. Các cấu hình của bộ mã hoá Bên cạnh kịch bản kiểm tra, các cấu hình khác của bộ mã hoá cũng có thể được cấu hình thông qua các biến môi trường. Mặc định, công cụ Make hỗ trợ nhận thông tin từ các biến môi trường. Dựa vào các biến môi trường này và công cụ Make, các kịch bản kiểm tra và các tham số khác có thể được tiếp nhận từ biến môi trường, và hệ thống có thể được kiểm tra với các chế độ khác nhau. Việc chạy mô phỏng ở mức hành xử hay mức cổng logic cũng được cấu hình qua các biến môi trường. Các biến môi trường này có thể được lưu vào tập tin để sử dụng lại trong các lần mô phỏng khác nhau. Sau đây là một ví dụ của việc đặt giá trị cho các biến môi trường trong môi trường bash shell: 1export PROJECT_ROOT=../FRONT-END 2export SIM_TRACE_LEVEL=10 3export SIM_PARA_FILE=foreman_qcif.cfg 4export COMPILER_OPTS=-quiet Biến môi trường quan trọng nhất là PROJECT_ROOT. Biến này trỏ đến thư mục chứa mã nguồn của cả hệ thống. Sau khi biến này được đặt giá trị, hệ thống Makefile sẽ có thể được hoạt động. Hệ thống mô phỏng hoàn toàn tự động từ biên dịch thiêt kế, đến chạy mô phỏng, và gỡ rối. Một số biến khác như SIM_PARA_FILE thông báo kịch bản sẽ được sử dụng để chạy mô phỏng. Biến này có thể được đặt nhiều kịch bản mô phỏng, phân cách nhau bằng khoảng trắng. IV. CÁC CÔNG CỤ MÔ PHỎNG, HỖ TRỢ MÔ PHỎNG VÀ QUẢN LÝ KỊCH BẢN MÔ PHỎNG VÀ CẤU HÌNH CỦA BỘ MÃ HOÁ Trong hệ thống kiểm tra và kiểm chứng thiết kế VENGME, chúng tôi sử dụng công cụ Make để quản lý các tập tin sinh ra trong quá trình biên dịch, chạy mô phỏng, và kiểm tra kết quả mã hoá. Bên cạnh công cụ Make, chúng tôi còn sử dụng một số ngôn ngữ thông dịch như bash/sh script và Python. Hai công cụ mô phỏng ngôn ngữ miêu tả phần cứng đang được sử dụng để chạy mô phỏng hệ thống VENGME là công cụ ModelSim [11] của hãng Mentor Graphics và VCS [12] của hãng Synopsys. A. Hỗ trợ kiểm tra thiết kế bằng GNU Make GNU Make[10] là một công cụ đã được sử dụng rộng rãi để hỗ trợ biên dịch các ngôn ngữ lập trình khác nhau. Ưu điểm của Make là chúng ta có thể viết các luật đơn giản để biên dịch các tập tin mã nguồn theo một thứ tự nhất định. Khi một tập tin thay đổi, thì các tập tin phụ thuộc vào nó cần được biên dịch lại. Việc này có thể rút ngắn thời gian biên dịch thiết kế do không phải biên dịch lại các tập tin không phụ thuộc vào các tập tin bị thay đổi. Tuy nhiên, Make không hỗ trợ tốt các ngôn ngữ miêu tả phần cứng. Hãng Mentor Graphics và Synopsys đều cung cấp các công cụ để sinh ra Makefile, tuy nhiên, các tập tin này hoàn toàn phụ thuộc vào các công cụ và khó thay đổi theo yêu cầu của người lập trình. Để hỗ trợ nhiều công cụ mô phỏng, chúng tôi sử dụng Emacs và VHDL-mode [13] để sinh ra các tập tin Makefile cho ngôn ngữ VHDL. Tuy nhiên, VHDL-mode không hỗ trợ sinh Makefile cho nhiều thư viện. Do vậy, chúng tôi đã thay đổi VHDL-mode để sinh ra tập tin Makefile cho từng thư viện riêng lẻ có trong thiết kế. Sau đó, chúng tôi viết tập tin Makefile tổng hợp cho phép biên dịch tất cả các thư viện và các tập tin phụ thuộc. Hiện tại, Makefile do chúng tôi thiết kế có thể biên dịch hệ thống với cả hai công cụ, hỗ trợ chạy mô phỏng đến mức cổng logic (gate-level simulation) một cách tự động hoàn toàn dựa vào các biến môi trường và kịch bản kiểm tra. Makefile của chúng tôi cũng hỗ trợ biên dịch song song và chạy mô phỏng song song. Để chạy mô phỏng đa tiến trình (multi-process) với kịch bản mô phỏng bất kỳ (thậm chí với kịch bản do người dùng tự viết không có trong hệ thống), luật Makefile đã được viết sử dụng các luật tự động (pattern rule). Ví dụ, để sinh ra tập tin .h264.txt từ một kịch bản kiểm tra bất kỳ (tập tin <tên-kịch- bản>.cfg), chúng tôi dùng luật của GNU make như sau: %.h264.txt : %.cfg $(eval SIM_RUN_FILE=$<) $(SIM_CMD) $(SIM_OPTS); Ứng với mỗi kịch bản kiểm tra (tập tin <tên-kịch- bản>.cfg), sẽ được sinh ra một tập tin đầu ra tương ứng bằng các chạy công cụ mô phỏng với các tham số tương ứng với kịch bản kiểm tra. Để tạo ra tập tin nhị phân .h264 và tập tin sau khi giải mã bằng JM, chúng tôi cũng sử dụng các luật tự động tương tự như trên: %.h264 : %.h264.txt @python $(script_src)/h264.py -i $< -o $@ %.dec.yuv : %.h264 @$(REF_DECODER) -i $< -o $@ Do các tập tin ở đầu ra của hệ thống là các tập tin văn bản, do vậy, chúng tôi đã viết một chương trình Hội thảo quốc gia 2014 về Điện tử, Truyền thông và Công nghệ thông tin (ECIT2014) ISBN: 978-604-67-0349-5 395 Python [14] để chuyển tập tin văn bản này thành tập tin nhị phân trước khi đưa kết quả vào bộ giải mã chuẩn để kiểm tra. Bằng cách sử dụng các luật tự động, chúng tôi có thể chạy mô phỏng với bất kỳ kịch bản kiểm tra nào đúng định dạng như đã trình bày ở phần III-B. Tùy vào yêu cầu của người thiết kế, người thiết kế có thể chọn chạy hệ thống với tất cả các kịch bản kiểm tra, hoặc chạy với một số kịch bản kiểm tra, chạy mô phỏng với nhiều tiến trình hoặc đơn tiến trình. Cú pháp để chạy mô phỏng với toàn bộ các kịch bản kiểm tra đã được định nghĩa sẵn sử dụng 4 tiến trình song song như sau: $ make regression -j4 hoặc chạy với một số kịch bản kiểm tra do người dùng định nghĩa với 2 tiến trình chạy song song: $ export SIM_PARA_FILE="f_qcif.cfg a_qcif.cfg" $ make run -j2 B. Kết quả đạt được Hình 4 là thời gian chạy mô phỏng của từng kịch bản kiểm tra riêng lẻ, và tổng thời gian chạy mô phỏng trong trường hợp chạy song song 4 tiến trình sử dụng hệ thống mô phỏng và kiểm chứng được đề xuất trên hai chương trình mô phỏng phổ biến là Questasim và VCS. Tổng thời gian mô phỏng cho cả 8 video trong trường hợp sử dụng bốn tiến trình mô phỏng chạy song song tại một thời điểm sử dụng chương trình QuestaSim là 258 phút. Trong khi đó, nếu chúng ta chạy lần lượt từng kịch bản, tổng thời gian chạy mô phỏng của các kịch bản này là 1017 phút. Như vậy, nếu chạy song song bốn kịch bản tại một thời điểm, hệ thống này có thể giảm thời gian mô phỏng xuống xấp xỉ 4 lần. Với tám kịch bản kiểm tra 0 50 100 150 200 250 300 ak iy o qc if fo re m an qc if ha ll qc if hi gh w ay qc if ak iy o ci f fo re m an ci f ha ll ci f hi gh w ay ci f 4 pr oc es se s in p ar al le l Si m ul at io n tim e (in m inu tes ) QuestaSim VCS Hình 4. Thời gian chạy mô phỏng của hệ thống với một số kịch bản kiểm tra bằng chương trình QuestaSim và VCS. này, hệ thống cũng đạt được tổng độ bao phủ (coverage) của 8 kịch bản kiểm tra khoảng 95%. Dựa vào kết quả giải mã của chương trình JM và khả năng tự kiểm tra lỗi của AHB_VIP, các lỗi có thể được phát hiện sớm, đảm bảo các thay đổi trong quá trình phát triển không ảnh hưởng đến chức năng và chất lượng của bộ mã hoá. V. KẾT LUẬN Mô phỏng, kiểm tra và kiểm chứng thiết kế là những vấn đề quan trọng có ảnh hưởng đến chất lượng của các thiết kế phần cứng. Bằng việc áp dụng các công cụ phần mềm mã nguồn mở, kết hợp với tính năng của các công cụ mô phỏng và kiểm chứng, hệ thống kiểm tra và kiểm chứng cho bộ mã hoá tín hiệu video H.264/AVC VENGME đã được xây dựng một cách linh động. Hệ thống có thể rút ngắn thời gian biên dịch thiết kế, rút ngắn thời gian mô phỏng bằng cách sử dụng các tiến trình chạy song song. Hệ thống này cũng giúp cho người lập trình không cần phải quan tâm đến các chi tiết về quá trình biên dịch, mô phỏng và kiểm chứng. Nó cho phép người thiết kế có thể chạy mô phỏng trên các hệ tính toán hiệu năng cao, và tận dụng được tối đa tài nguyên của hệ thống. Với tám kịch bản kiểm tra và chạy song song 4 kịch bản tại một thời điểm, hệ thống mô phỏng và kiểm chứng đề xuất đã rút ngắn thời gian chạy mô phỏng xuống 4 lần so với chạy lần lượt từng kịch bản với độ bao phủ đạt 95%. TÀI LIỆU THAM KHẢO [1] “Tool command language (tcl),” ~zimmi/emacs/vhdl-mode.html. [2] Ngoc-Mai Nguyen, Edith Beigne, Suzanne Lesecq, Duy-Hieu Bui, Nam-Khanh Dang, and Xuan-Tu Tran, “H.264/AVC hard- ware encoders and low-power features,” in Proceedings of the 2014 IEEE Asia Pacific Conference on Circuits and Systems (IEEE APCCAS 2014), Okinawa, Japan, 2014. [3] “ITU-T Recommendation and International Standard of Joint Video Specification,” March 2005. [4] A. Joch, F. Kossentini, H. Schwarz, T. Wiegand, and G. J. Sulli- van, “Performance comparison of video coding standards using lagragian coder control,” in IEEE International Conference on Image Processing (ICIP 02), 2002, pp. 501–504. [5] “Information Technology—Coding of Audio-Visual Objects—Part 2: Visual,” 1999. [6] “Video Coding for Low Bit Rate Communication,” 1998. [7] “Information Technology—Generic Coding of Moving Pictures and Associated Audio Information: Video,” 1996. [8] Aeroflex Gaisler, “Grlib ip library,” index.php/products/ipcores/soclibrary. [9] Fraunhofer Institute, “H.264/AVC reference software,” http:// iphome.hhi.de/suehring/tml/. [10] GNU Software Foundation, “GNU Make,” software/make/. [11] Mentor Graphics, “Modelsim,” products/fpga/simulation/modelsim. [12] Synopsys, “VCS,” [13] Reto Zimmermann and Rod Whitby, “Emacs vhdl mode,” http: //www.iis.ee.ethz.ch/~zimmi/emacs/vhdl-mode.html. [14] Python Software Foundation, “Python programming language,” Hội thảo quốc gia 2014 về Điện tử, Truyền thông và Công nghệ thông tin (ECIT2014) ISBN: 978-604-67-0349-5 396
File đính kèm:
- xay_dung_he_thong_mo_phong_va_kiem_chung_cho_bo_ma_hoa_tin_h.pdf