1. Trang chủ
  2. » Luận Văn - Báo Cáo

Khóa luận tốt nghiệp Kỹ thuật máy tính: Thiết kế IP cho bộ đệm video

94 0 0
Tài liệu đã được kiểm tra trùng lặp

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Tiêu đề Thiết Kế IP Cho Bộ Đệm Video
Tác giả Mai Xuan Phu
Người hướng dẫn TS. Tran Quang Nguyen
Trường học Đại học Quốc gia TP. Hồ Chí Minh
Chuyên ngành Kỹ thuật máy tính
Thể loại khóa luận tốt nghiệp
Năm xuất bản 2024
Thành phố TP. Hồ Chí Minh
Định dạng
Số trang 94
Dung lượng 31,3 MB

Nội dung

Khi tín hiệu truyền giữa các miền xung clock không đồng bộ, cần phải đồng bộ hóa tín hiệu từ miền xung clock cũ với miền xung clock mới trước khi có thể sử dụng tín hiệu đó một cách chín

Trang 1

ĐẠI HOC QUOC GIA TP HO CHÍ MINH

TRUONG DAI HOC CONG NGHE THONG TIN

KHOA KY THUAT MAY TINH

MAI XUAN PHU - 20521754

KHOA LUAN TOT NGHIEP THIET KE IP CHO BO DEM VIDEO

IP design for video frame buffer

CU NHAN KY THUAT MAY TINH

GIANG VIEN HUONG DAN

TS Tran Quang Nguyén

TP HO CHÍ MINH, 2024

Trang 2

LỜI CẢM ƠN

Lời đầu tiên, em xin gửi lời cảm ơn chân thành đến quý thầy cô tại trườngĐại học Công nghệ Thông tin — Đại học Quốc gia Thành phố Hồ Chí Minh và đặc

biệt là Khoa Kỹ thuật Máy tính, trong quá trình học tập và rèn luyện tại trường, với

su day dỗ và chi bảo tận tình, quý thầy cô đã trang bị cho em những kiến thức vềchuyên môn cũng như kỹ năng mềm quý báu Trường và khoa đã luôn tạo mọi điều

kiện thuận lợi cho em, qua đó giúp em có thể hoàn thành các học phần tại trường và

đề tài khóa luận tốt nghiệp này một cách tốt nhất

Em xin gửi lời cảm ơn sâu sắc tới thầy Trần Quang Nguyên, thầy đã đồnghành và giúp đỡ em không chỉ suốt thời gian thực hiện đồ án 1, đồ án 2, khóa luậntốt nghiệp mà còn là cả quá trình học tập tại trường Thầy đã tận tình chỉ dẫn, theo

dõi và đưa ra những lời khuyên bồ ích giúp em giải quyết được các van đề gặp phải

trong quá trình nghiên cứu và hoàn thành đề tài một cách tốt nhất

Đặc biệt, để hoàn thành đề tài khóa luận tốt nghiệp này, em xin gửi lời cảm

ơn đến anh Nguyễn Hiếu Binh và Công ty Cô phần Công nghệ VNCHIP đã trao cơhội cho em tham gia vào thực hiện một phần đề tài của công ty, cũng chính là đề tàikhóa luận tốt nghiệp này Sau quá trình tham gia thực hiện đề tài, em đã tích lũyđược nhiều kinh nghiệm, kiến thức cho bản thân dé có thé phát triển hơn không chỉtrong công việc mà còn trong đời sống

Cuối cùng, em xin cảm ơn gia đình, người thân, bạn bè đã luôn bên cạnh,động viên và hỗ trợ em trong suốt quãng thời gian học tập tại trường

Một lân nữa, em xin chân thành cảm ơn!

Trang 3

MỤC LỤC

CHƯƠNG 1 GIỚI THIEU DE TÀẦI -2- 22 £+E£2EE£2EE£2EE+EEEEEEvEEEeExerrxreri 2

1.1 Tổng quan để tài :- s5 5x+SE£EEEEE£EEEEEEEEEE12112112212112112112111111 1.1.1 xe 2

908 N" 41.3 Giới hạn đề tài s-5cSt SE 2 EE21121127121121111121111111 1111111111 crrre.4

CHƯƠNG 2 CƠ SỞ LÝ THUYÊT 2- 22 5¿2E£2EE2EE+2EEtEEEvEEEvrEeerkerrxeers 5

2.1 Không Ø1an màU - - - << + 11 E119 9190019 HH 5

“AC con 7

2.3 Tính di động (MetastabilIfy)) - -.- - c SH HH HH ng ng rưệp 92.4 Vượt miền xung clock (Clock domain crOSSIR8)) - «- 5+ s++s++<++ 13

3.3 FIFO bat đồng bộ (Asynchronous FIFO) 2¿- 2 + 2s+2z++£xzx+zzxersez 27

3.4 Dual Port RAÌM - - -ccG 11111111100 111 11H 1kg kg kg ket 35

3.4.1 RAM Controller - 55 S3 3326222222111 11 331111111111 g1 1111k reg 35 3.4.2 RAM MeImOrV - 6 + 1k1 TH HH TH TH HH 38

ho 00) 7 4 40

3.5.1 P2 Index ¿- 2-5622 SE 2E 2E2112217112117111121111211 21111111 cre 42

E22: A¿ nan 49

Trang 4

3.5.3 P2B Last Pixel Data 2222111110111 1 vn 55555111 reg50

3.5.4 P2B Byte Data 25-2222 21 22112711271271211211111111 11.111 xcre 52

3.6 Byte To Pixel COTIV€TẨ€T 0G TH HH nkrry 56

3.6.1 B2P Index cccecsesssesssesssesssesssesssesssecssesssessvessvessesssesssesssecssecssessnesseeeseeeseeess 57

3.6.2 B2P read ready oo eee ee ceseescececsecesecsecesecsseesecssessesesesssessesseeesesseeeseeneees 59

3.6.3 B2P Last Byte ÏDafa - LH HT TH HH HH ng kg, 62

3.6.4 B2P Pixel Dafa 22-26 S2s 2 2211271127127121122117112111E 111 xe 63

CHƯƠNG 4 MO PHONG VÀ ĐÁNH GIA KET QUA -: -:-5+¿ 71

4.1 Sử dụng UVM dé mô phỏng và kiểm tra thiết kế 2- 2-2 252252: 71

4.1.1 Với trường hợp tốc độ ghi dir liệu nhanh hơn tốc độ đọc dữ liệu 72

4.1.2 Với trường hợp tốc độ ghi dữ liệu chậm hơn tốc độ đọc dif liệu 744.2 Darh gid két 0 sa 78CHƯƠNG 5 KET LUẬN VA HƯỚNG PHAT TRIÉN -2 52522 81

5.1 Kết luận A N đc coi 81

5.3 Huong phat tri@n 018 82

Trang 5

DANH MỤC HÌNH

Hình 1.1: Ung dụng của Video Frame Buffer - 2-5-2 s+E£+E+z£xrxezrxerxee 2

Hình 1.2: Cách Video Frame Buffer lưu trữ và hiển thị dữ liệu [4] - 3

Hình 2.2: Không gian màu Y’CDCr [6] - 2 2321333 E+*EE+*EEEEeeEseeeeeeeseeerre 7

Hình 2.3: Các chuỗi gray €Ode -¿- ¿+22 E+E9EEEE£EEEEEEEEEE2121 2112121112112 7

Hình 2.4: Mach logic chuyền đổi từ số nhị phân sang gray code -‹ 8 Hình 2.5: Tính di động trong mạch kỹ thuật SỐ 0 5 9

Hình 2.6: Set-up time va hold-time [14] - <5 + + £+*kE++v+seeEeseeseeeeeses 10

Hình 2.7: Ngõ ra khi bị metastable [Š] - - 6 5 + + E*3EESSiEserkksrkrresek 10

Hình 2.8: Đồng bộ tín hiệu bang hai thanh ghi [14] - 2-2 225z+s22sz2sz2s++2 12

Hình 2.9: Clock domain crossing (CDC) [I Ï]| - - «<< «<< £+see++eexssexs 13

Hình 2.10: Phân cấp các lớp cơ sở trong UVM [18] ¿ ¿-¿5cs+5csz55s+2 14

Hình 2.12: Các trường bên trong một resource [ Í8] - - -««++s>++se++eex+sss+ 17 Hình 2.13: Cách resource được lưu trong Resource database [18] 18

Hình 2.14: Cau trúc của UVM testbench 2-2222 ++s£+£x+£x++xerxerxeerxerxee 19Hình 2.15: Ví dụ về uvm_sequence_item [ 1] - -«++s««++sxx+se+seeeseeeeeeeess 19Hình 2.16: Hệ thống phân cấp lớp của UVM sequence [1§] - 2: 20

Hình 2.17: Hoạt động của UVM sequencer [18] - «+ << +++x+seexeeereeess 20 Hình 2.18: Active agent [ Í 8 ] - - c1 113219 1 191 1 HH ng 21 Hình 2.19: Passive agent [ 1Ñ] - - - - s1 + 1921119119119 11111 1n ng 22

Hình 3.1: Kiến trúc Video Frame BufFer - 2+ 2++2E£+EE+EEzE+rxerxrrreerkeee 24Hình 3.2: Interface của kiến trúc Video Frame Buffer -2- 2 5z 5z s52 25

Hình 3.3: Interface của module Sync ]D€t€C(OT - c5 **++++svseeexeeerssers 26

Hình 3.4: Kiến trúc của FIFO đồng bộ [13] - 2-2 2 22 +2 ++E++E+zE+zE++xezreee 27Hình 3.5: Tín hiệu day và rỗng trong FIFO bat đồng bộ [2] - 2s 29Hình 3.6 Kiến trúc của FIFO bất đồng bộ [2] -¿ ¿¿+x++z++zx+zseze- 30Hình 3.7: Biến đôi con trỏ đọc từ binary sang gray code - : -:-+¿ 33

Trang 6

Hình 3.8: Biến đổi con trỏ ghi từ binary sang gray code - 22s: 33

Hình 3.9: Interface của module RAM Controller 55+ «+ £++s£es++eeess 35

Hình 3.10: Interface của RAM MemOrV/ - G1 9g ng ngư 39

Hình 3.11: Interface cua module Pixel To Byte ConvVert€r -« «+ «+ «+2 41 Hình 3.12: Interface của module P2B_index eee ccccccccccccceeeeesssssseseeseeseseeess 42

Hình 3.13: Lưu đồ thuật toán cho index của Pixel To Byte với dữ liệu 24 bit 43

Hình 3.14: Lưu đồ thuật toán cho index của Pixel To Byte với dit liệu 18 bit 44

Hình 3.15: Lưu đồ thuật toán cho index của Pixel To Byte với dữ liệu 16 bịt 47

Hình 3.16: Lưu đồ thuật toán cho index của Pixel To Byte với dữ liệu 12 bịt 48

Hình 3.17: Interface của module P2B_ datavalid - E E SE xxx *<<<<+ 49 Hình 3.18: Lưu đồ thuật toán xác định dữ liệu hợp lệ trong P2B_ datavalid 50

Hình 3.19: Interface của module P2B_ lastpixeldafa -¿- 5s c+xs+ecscss51 Hình 3.20: Lưu đồ thuật toán cho module P2B_ lastpixeldafa - -«+ 51

Hình 3.21: Interface của module P2B_ byfe_ đafa - c5 S<s++csseeseeeresees 52 Hình 3.22: Lưu đồ thuật toán cho byte data của Pixel To Byte với dit liệu 24 bit 53

Hình 3.23: Lưu đồ thuật toán cho byte data của Pixel To Byte với dit liệu 18 bit 54

Hình 3.24: Lưu đồ thuật toán cho byte data của Pixel To Byte với dit liệu 12 bit 55

Hình 3.25: Interface của module Byte To Pixel Converf€T -‹ -«<+sss++s «s2 56 Hình 3.26: Interface của module B2P_ Index SE E v33 3322 57 Hình 3.27: Lưu đồ thuật toán tính toán chỉ số cho Byte To Pixel -. 58

Hình 3.28: Interface của module B2P_read_ready ee eeeceeeeeeeneeeeeeeeneeeseeeeneeeees 59 Hình 3.29: Lưu đồ giải thuật tính toán ram_read_ready với dữ liệu 24 bit 60

Hình 3.30: Lưu đồ giải thuật tính toán ram_read_ready với dữ liệu 18 bịt 60

Hình 3.31: Lưu đồ giải thuật tính toán ram_read_ready với dữ liệu 16 bịt 61

Hình 3.32: Lưu đồ giải thuật tính toán ram_read_ready với dữ liệu 12 bịt 61

Hình 3.33: Interface của module B2P_ lastbytedafa 55 5- + + ssssereees 62 Hình 3.34: Interface của module B2P_pixeldata 5 555 5<*++*c+scc+seese 63 Hình 3.35: Lưu đồ thuật toán cho pixel data của Byte To Pixel với dữ liệu 24 bit 64

Hình 3.36: Lưu đồ thuật toán cho pixel data của Byte To Pixel dữ liệu 18 bit (1) 65

Trang 7

Hình 3.37: Lưu đồ thuật toán cho pixel data của Byte To Pixel dữ liệu 18 bit (2) 66

Hình 3.38: Luu đồ thuật toán cho pixel data của Byte To Pixel với dit liệu 16 bit 68

Hình 3.39: Luu đồ thuật toán cho pIxel data của Byte To Pixel với dữ liệu 12 bit 69

Hình 4.1: Mô phỏng với tốc độ ghi nhanh đọc khi dữ liệu chưa sẵn sang 72

Hình 4.2: Dạng sóng với tốc độ ghi nhanh hon đọc khi dữ liệu chưa sẵn sàng 72

Hình 4.3: Mô phỏng với tốc độ ghi nhanh hơn đọc khi FIFO chưa đầy 73

Hình 4.4: Dạng sóng với tốc độ ghi nhanh hơn đọc khi FIFO chưa đây 73

Hình 4.5: Mô phỏng với tốc độ ghi nhanh hơn đọc khi FIFO day 74

Hình 4.6: Dạng sóng với tốc độ ghi nhanh hơn đọc khi FIFO đây 74

Hình 4.7: Mô phỏng với tốc độ ghi chậm hơn đọc khi dữ liệu chưa sẵn sàng 75

Hình 4.8: Dạng sóng với tốc độ ghi chậm hơn đọc khi dữ liệu chưa sẵn sàng 75

Hình 4.9: Mô phỏng với tốc độ ghi chậm hơn đọc khi dữ liệu sẵn sàng 76

Hình 4.10: Dạng sóng với tốc độ ghi chậm hơn đọc khi dữ liệu sẵn sàng 76

Hình 4.11: Dạng sóng với tốc độ ghi chậm hơn đọc khi đã hết dữ liệu lưu sẵn 76

Hình 4.12: Mô phỏng với tốc độ ghi chậm hơn đọc khi đã hết dit liệu lưu sẵn 77

Hình 4.13: Báo cáo tóm tat sau khi xác minh bằng UVM 2 225: 77

Hình 4.14: Tài nguyên sử dung (graph), - se xxx se 78 Hình 4.15: Tài nguyên sử dung (fabl€) - - 5 + SE E*vESseeEesereeeerrereree 78

Hình 4.16: Tổng hợp năng lượng sử dụng ¿- 2 5¿+s£+++x++x+zxerxezrxerxee 79

Hình 4.17: Nang lượng sử dụng trên chip - - + Sc sex E+ekkeeseererreeersrree 79

Hình 4.18: Lattice Semiconductor Video Frame Buffer [2] - 5< <<79

Trang 8

Các thuộc tính trong không gian màu Y *CbCT - 555 +++s*++s>+ss++ 6

Các macros cho UVIT_ T€DOFK - + + 311191 19911 91 19 11 1v kg 16

À2 /0 2i 16

Các trường bên trong MOt f€SOUTCC - 5 5S * + +EEseeeeereeers 17 Dia chỉ cua FIFO với trường hợp FIFO sử dụng 3 bit địa chỉ 30

So sánh sự khác nhau giữa binary và gray COdEe - 5 «<< s<++<<+++ 32

So sánh con trỏ ở dạng nhị phân va con trỏ ở dang gray code 34

Các tín hiệu trong module RAM ControlÏer «+ «<< <++£<s+ 35

Các tín hiệu trong module RAM Memory - - 5s +s++c+csxe 39 Các tín hiệu trong module P2B_ index - s5 ss++ss+ssex+eeeesess 42

Index của Pixel To Byte với dữ liệu 24 ĐI( - 55525 <<++++s+2 44 Index của Pixel To Byte với dữ liệu 18 DI( 5 555 <<+<£<s+ 46

Index của Pixel To Byte với dữ liệu 16 ĐI( 55-5555 <<++>+<ss2 47 Bảng 3.10: Index của Pixel To Byte với dữ liệu 12 bit - 55 55<+s++<++ 49 Bảng 3.11: Các tín hiệu trong module B2P_Index s55 s+++<*s++se++sex+sess 57

Trang 9

DANH MỤC TỪ VIET TAT

Từ viết tắt Từ đầy đủ

IP Intellectual property UVM Universal Verification Methodology MTBF Mean time between failures

FIFO First in first out

CDC Clock domain crossing

MSB Most significant bit

LSB Least significant bit

RAM Random-access memory

P2B Pixel To byte

B2P Byte To pixel

VFB Video Frame Buffer

SoC System on Chip

RTL Register transfer level

Trang 10

TOM TAT KHÓA LUẬN

Thời đại ngày nay, công nghệ đang phát triển với tốc độ rất nhanh, kèm theo

đó là độ phổ biến của các thiết bị điện tử như tivi, máy tính, điện thoại càng ngàycàng cao Dé cho các thiết bị ké trên có thé hoạt động và hiển thị nội dung một cáchmượt mà thì không thể không nhắc đến IP cho bộ đệm video, cũng chính là IP đượcnghiên cứu và thiết kế trong đề tài này

Đề tài “Thiết kế IP cho bộ đệm video” tập trung vào công việc nghiên cứu vàthiết kế IP có chức năng lưu trữ tạm thời các khung hình trong video Bộ đệm videohay Video Frame Buffer được sử dụng dé lưu trữ tạm thời các khung hình videotrong quá trình xử lý và hiến thị Cụ thé hơn, Video Frame Buffer lưu trữ các khung

hình dưới dạng từng pixel trong khung hình đó Các thiết bị điện tử sử dụng Video Frame Buffer có thé xuất hình anh ra một cách liên tục, từ đó mang lại trải nghiệm

mượt mà hơn cho người dùng.

Đề tài nghiên cứu và sử dụng ngôn ngữ mô tả phần cứng Verilog,SystemVerilog dé có thé hiện thực các module cần thiết cho IP như Pixel To Byte,

Byte To Pixel, Dual Port RAM, Output Pixel Data, Sync Detector Dé có thể thiết

kế những module kể trên, cần phải tim hiểu về các thiết kế bat đồng bộ nhưAsynchronous FIFO hay các van đề như Crossing clock domain [2]

Dé kiểm tra độ chính xác của thiết kế, đề tài xây dựng môi trường UVM để

xác minh chức năng của thiết kế UVM sẽ tạo ra các kịch bản kiểm thử ngẫu nhiên

cho các module Với từng trường hợp sẽ có các trường dữ liệu ngõ vào được tạongau nhiên từ đó có thé tìm được các van đề nếu có bên trong thiết kế mà khi sửdụng các testbench thông thường không thể bao quát được, đảm bảo cho thiết kế cóthê hoạt động đúng với chức năng mong muốn

Trang 11

CHUONG 1 GIỚI THIỆU DE TÀI

1.1 Téng quan đề tài

Ngày này, nhu cầu cho các thiết bị điện tử như tivi, máy tính, điện thoại, máyảnh kỹ thuật số hay các thiết bị điện tử tiêu dùng khác ngày càng tăng cao và dầntrở thành một phần không thé thiếu trong đời sống hàng ngày ở trong công việc haygiải trí của đại đa sô mọi người.

AN

Hình 1.1: Ung dụng của Video Frame Buffer

Dé cho các thiết bị kể trên có thé hoạt động một cách hiệu quả, đem lại chất

lượng hiển thị tốt nhất cho người sử dụng thì một thành phần không thẻ thiếu trongcác thiết bị này chính là Video Frame Buffer, hay còn gọi là bộ đệm video VideoFrame Buffer là một bộ đệm lưu trữ dữ liệu trong một video hay chính là các khunghình trong video đó Cụ thể, mỗi khung hình sẽ được tạo nên từ rất nhiều pixel tùy

thuộc vào kiểu dữ liệu, có thể ké đến như Full HD (1920x1080) gồm có 2.073.600

pixel hay HD (1280x720) gồm có 921.600 pixel [3], bộ đệm sẽ lưu trữ từng pixelnày và xuất chúng ra sau đó Video Frame Buffer lưu trữ các khung hình video tam

thời, nó cho phép các thiết bị xử lý video mượt mà hơn bằng cách tạo ra các khung

hình liên tục Nhờ vào đó, tránh được việc video khi hiển thị bị ngắt ngãng hay hiểnthị những hình ảnh không đúng với mong muốn Cách Video Frame Buffer lưu trữ

và hiển thị dit liệu được minh họa ở Hình 1.2, từ một hình anh hay khung hình hiểnthị sẽ được chuyền đổi thành các giá tri pixel dé lưu trữ, các giá trị này sẽ có mỗimàu sắc khác nhau hoặc giống nhau tùy theo giá trị của pixel

Trang 12

Application Image Frame Buffer Display Image

Hình 1.2: Cách Video Frame Buffer lưu trữ va hién thị dữ liệu [4]

Bộ đệm video đóng vai trò quan trọng trong việc giúp giải quyết vấn đề về

sự không đồng nhất tốc độ giữa thành phan xử lý và thành phan hiển thị trong cácthiết bị điện tử Khi thành phan xử lý có tốc độ chênh lệch với thành phan hiền thị,

dữ liệu được hiển thị sẽ có thé bi mat hoặc ngắt quãng Cụ thể, khi tốc độ của thành

phần xử lý chậm hơn tốc độ của thành phần hiển thị, lúc này dữ liệu được gui đếnthành phan hiển thị sẽ không được liên tục, gây ra tình trạng ngắt quãng dữ liệu.Ngược lại khi tốc độ của thành phần xử lý nhanh hơn tốc độ của thành phan hiển

thị, lúc nay dit liệu được gửi đến liên tục và thành phần hiền thị không thé đáp ứng

được với tốc độ đó, nên có thê dẫn đến mất dữ liệu khi hiển thị Bộ đệm này giảiquyết vấn đề trên bằng cách thay vì dữ liệu sau khi xử lý sẽ được gửi đến thànhphan hiển thị, nó sẽ được gửi đến bộ đệm và lưu trữ trước, sau khi dữ liệu đã đượclưu trữ ở mức 6n định, bộ đệm sẽ gửi dữ liệu đến thành phần hiển thị dé bắt đầuhiển thị hình ảnh Video Frame Buffer lưu trữ một phần của dữ liệu, đảm bảo rằnghình ảnh luôn sẵn sang dé hiển thị bat cứ lúc nào, từ đó giúp việc hiển thị video ônđịnh hơn Khi đó, nếu thành phần xử lý bị gián đoạn hoặc chậm lại, bộ đệm video

lúc này vẫn có thé cung cấp đủ dữ liệu dé tiếp tục hiển thị video trong một khoảng

thời gian trong khi chờ thành phần xử lý hoạt động 6n định trở lại, giúp hình ảnh

vẫn có thể hiển thị một cách liên tục mà không bị ngắt quãng Bộ đệm video làthành phần không thể thiếu trong các thiết bị điện tử hiện đại, giúp đảm bảo chất

lượng của video, nâng cao trải nghiệm người dùng.

Với những tính năng quan trọng và lợi ích rõ ràng của việc sử dụng Video

Frame Buffer đã được đề cập, bộ đệm video hay Video Frame Buffer là một IP rất

Trang 13

cần thiết trong các thiết bị điện tử ngày nay Đây là một IP đã và đang được sử dụngrộng rãi, mang tính ứng dụng cao trong thực tế bên trong các thiết bị mà chúng ta sửdụng hàng ngày như điện thoại thông minh, máy tính bảng, tivi, và các hệ thống giảitrí Nhờ có bộ đệm video, các thiết bị này có thê hiển thị hình ảnh mượt mà, không

bị ngắt quãng hay mat hình anh Do đó, việc nghiên cứu và phát triển các IP cho bộđệm video như trên hay các IP có chức năng tương tự là một điều cần thiết để

không chỉ dừng lại ở việc duy trì chức năng mà IP này đang đem lại mà còn ngày

càng nâng cao hơn chất lượng của nó

1.2 Mục tiêu đề tài

Mục tiêu của dé tài chính là thiết kế được IP cho bộ đệm video dé có thể lưutrữ được các khung hình bên trong video, giúp video có thé hiển thị ổn định vàmượt mà Đề đạt được mục tiêu này, sẽ cần thực hiện các nội dung:

Nghiên cứu kiến trúc, hoạt động của các IP bộ đệm video trong các bài báo

khoa học hay của các công ty thiết kế IP

Nghiên cứu các cơ sở lý thuyết cần thiết dé thiết kế các thành phan trong IP

như Asynchronous FIFO được sử dụng trong bộ Pixel To Byte và Byte To Pixel,

thiết kế Dual Port RAM, hay kiến thức về UVM dé xác minh chức năng của IP

Sau khi đã nghiên cứu và tìm hiéu kiến thức, tiến hành thiết kế các moduletrong IP sử dụng ngôn ngữ SystemVerilog, sau khi hoàn thành thiết kế, viết cáctestbench cơ bản dé kiểm tra hoạt động của module và cập nhật thiết kế khi gặp lỗi

Tiếp theo sẽ là thực hiện việc kết nối các module với nhau để hoàn chỉnhthiết kế tổng thê của IP

Cuối cùng, thiết kế môi trường xác minh sử dung UVM dé kiểm tra chức

năng tông thé thiết kế IP dé đảm bảo IP hoạt động đúng chức năng mong muốn

1.3 Giới hạn đề tài

Đề tài chỉ tập trung vào mục tiêu chính là thiết kế bộ đệm dé lưu trữ khunghình video, IP không có chức năng chỉnh sửa các pixel sau khi được lưu trữ để cảithiện chất lượng hay làm thay đổi pixel tùy theo mục đích của người dùng (các tínhnăng này sẽ là hướng phát triển trong tương lai của IP này)

Trang 14

CHƯƠNG 2 CƠ SỞ LÝ THUYET

2.1 Không gian màu

Không gian màu được định nghĩa là các loại màu khác nhau Vì vậy, chúng

được sử dụng trong hệ thống xử lý hình ảnh cho nhiều mục đích Có nhiều khônggian màu phổ biến được sử dung rộng rãi như là RGB, CMYK, Y’UV, YIQ,Y’CbCr, HSV, v.v Dé tài này tập trung vào hai không gian màu chính đó là RGB

và Y’CbCr.

Không gian màu RGB: là thông tin các màu đỏ, xanh lá cây và xanh dương

thuần túy, đây là các giá trị nguyên mẫu nhất có thể Giá trị của từng kênh màuđược tạo nên từ chính nó, giúp tạo ra những giá trị RGB chính xác nhất

Trong đề tài tập trung vào các loại RGB gồm:

e RGB 888: Mỗi thành phần màu đỏ, xanh lá cây và xanh dương sử dụng 8

bit cho mỗi thành phan Tổng 24 bit cho một pixel

e_ RGB 666: Mỗi thành phan màu đỏ, xanh lá cây và xanh dương sử dụng 6

bit cho mỗi thành phan Tổng 18 bit cho một pixel

e RGB 565: Thành phan màu đỏ và xanh dương sử dung 5 bit, thành phan

màu xanh lá cây sử dụng 6 bit Tổng 16 bit cho một pixel

1/5

3/9

4/5

Trang 15

Hình 2.1 cho thấy cách một pixel ở dạng RGB được tạo nên, nó được kết hợp

từ 3 thành phần màu đỏ, xanh lục và xanh lam Với độ phân giải càng cao thì từnggiá trị đỏ, xanh lục và xanh lam có thê được biểu diễn ở nhiều giá trị hơn, từ đó tạonên một pixel có độ chi tiết cao hơn

Không gian màu Y’CbCr: Không gian màu Y’CbCr được sử dụng rộng rãi

cho video kỹ thuật SỐ Trong định dạng này, độ chói (luminance) được lưu trữ dưới

dạng một thành phần duy nhất (Y) và màu sắc (chrominance) được lưu trữ dưới

dạng hai thành phần chênh lệch mau (Cb và Cr), trong đó Cb va Cr là sự khác biệtgiữa giá trị tham chiếu và thành phần màu xanh dương hoặc màu đỏ Y’CbCr là mộtphiên bản của YUV mà cách biểu diễn bị thay đôi

Bảng 2.1: Các thuộc tính trong không gian màu Y’CbCr Thuộc tính Mô tả

Độ chói hay độ sáng của hình ảnh Khi Y tăng thì độ sáng của hình

x anh cting dugc tang

Giá trị màu sắc biểu dién sự khác biệt giữa thành phan màu xanh

ch lam và giá trị tham chiếu.

Giá trị màu sắc biểu diễn sự khác biệt giữa thành phan mau đỏ và

cr giá trị tham chiếu.

Đề tài tập trung vào các loại Y’CbCr gồm:

e Y’CbCr 4:4:4: Thông tin Cb và Cr của tat cả các pixel đều được giữ lại

Y’CbCr 4:4:4 có chất lượng hiển thị cao nhất, do đó cần nhiều dunglượng để lưu trữ nhất Một pixel cho Y’CbCr 4:4:4 cần sử dụng 24 bit

e Y’CbCr 4:2:2: Trong mỗi hang pixel, chỉ 2 pixel được giữ lại thông tin

của Cb và Cr, giá trị Cb và Cr của các pixel lân cận được sao chép từ giá

tri Cb và Cr của pixel được giữ lại Một pixel cho Y’CbCr 4:2:2 cần sử

dụng 16 bịt.

e Y’CbCr 4:2:0: Trong hàng đầu tiên, thông tin của Cb và Cr của hai pixel

được giữ lại, và không có thông tin của Cb và Cr của pixel nào trong

Trang 16

hàng thứ hai được giữ lại Một pixel cho Y’CbCr 4:2:0 cần sử dụng 12

bít.

Hình 2.2: Không gian màu Y’CbCr [6]

Hình 2.2 cho thấy cách mà các pixel không có thông tin của Cb và Cr sử

dụng những thông tin đó của các pixel lân cận như thế nào Chi tiết cách thực hiện

đã được giải thích ở phía trên.

Trang 17

Gray code là một chuỗi các hệ thống số nhị phân Trong gray code, hai giá trịliên tiếp chỉ cách nhau một bit chữ số nhị phân (được minh họa ở Hình 2.3) Gray

code được sử dụng trong chuỗi của các số nhị phân do phần cứng tạo ra Những giá

tri này có thể tạo ra những giá trị không ôn định hoặc sai sót khi thực hiện quá trìnhchuyên đổi từ một số sang số tiếp theo Gray code giải quyết van dé này bằng cáchchỉ thay đổi một bit khi quá trình chuyền đổi giữa các số được thực hiện

Để biến đổi số nhị phân sang Gray code, thực hiện theo các bước:

Trong Gray Code, MSB sẽ luôn giống với bit đầu tiên của số nhị phân ban

Logic Circuit for Binary to Gray Code Converter

Hình 2.4: Mạch logic chuyền đổi từ số nhị phân sang gray codeHình 2.4 mô tả mạch logic cách chuyên đổi từ số nhị phân sang gray code,trong mạch trên, các công XOR được sử dụng để tính toán giá trị gray code của mã

nhị phân với giải thuật đã được trình bày ở trên.

Trang 18

Với cách chuyên đổi từ số nhị phân sang gray code như vậy, ta rút ra đượcmột công thức tổng quát dùng dé chuyên bat kỳ số nhị phân nào sang gray code.

Công thức được viết như sau:

GrayValue = (BinaryValue >> 1) ^ BinaryValue (1)

2.3 Tinh di d6ng (Metastability)

Trong các mach kỹ thuật số, chúng ta phải làm việc với các hệ thống đồng bộ

và bất đồng bộ Khi một tín hiệu đầu vào bất đồng bộ giao tiếp với một hệ thống

đồng bộ, hoặc bat kỳ khi nào một tín hiệu được chia sẻ bởi hai miền xung clock bat

đồng bộ, khả năng hệ thống gặp phải tính di động là rất cao Thường thì trạng tháinày xảy ra trong các flip-flop khi các tín hiệu đầu vào vi phạm các yêu cầu về thời

gian [7].

Hình 2.5 minh họa trường hợp có thé xảy ra hiện tượng di động trong các

mạch kỹ thuật só

Data external Data A to B

Trong bắt kỳ thiết kế nào, các flip-flop đều có set-up time và hold time cụ thể(minh họa ở Hình 2.6) Thời gian tối thiểu trước trước xung clock cạnh lên mà tínhiệu đầu vào phải ổn định được gọi là set-up time Thời gian tối thiểu sau xungclock cạnh lên, trong đó tín hiệu đầu vào phải duy trì ôn định, được gọi là hold time.Trong khoảng set-up time và hold time, tín hiệu đầu vào không được phép thay đổitrạng thái trước và sau xung clock cạnh lên Khi tín hiệu đầu vào thay đổi và viphạm set-up time hoặc hold time của flip-flops, đầu ra sẽ chuyển sang trạng tháikhông xác định hoặc không thể đoán trước được gọi là trạng thái metastable Tính

Trang 19

di động xảy ra là do sự lan truyền của trạng thái metastable [7].

data YA ta mustbe stale — M2

— setup time ——]

K— setuptime ——]

clock a

Hình 2.6: Set-up time và hold-time [14]

Tính di động có trong bat kỳ hệ thống nào xử lý các trạng thái én định mức

cao và mức thấp Đầu ra không thể đạt đến trạng thái được xác nhận là 1 hoặc 0

trong một khoảng thời gian nhất định Các điều kiện metastability gây khó khăn choviệc xác định mức logic đầu ra của mạch và thời gian cần thiết để trở về trạng thái

ồn định Khoảng thời gian này phụ thuộc vào điều kiện môi trường xung quanhcũng như công nghệ xử lý được sử dụng đề sản xuất thiết bị [7]

Hình 2.7: Ngõ ra khi bi metastable [8]

Hình 2.7 minh họa các tín hiệu metastable Tin hiệu đầu vào chuyển từ trạngthái thấp sang trạng thái cao cùng lúc với xung clock thay đổi, vi phạm yêu cầu tsucủa thanh ghi Tín hiệu dữ liệu đầu ra bắt đầu ở trạng thái thấp và vào trạng tháimetastable, trở nên vô định giữa mức cao và mức thấp Tín hiệu đầu ra A chuyềnsang trạng thái logic 1 và tín hiệu đầu ra B trở về trạng thái logic 0 Trong cả haitrường hợp, quá trình chuyền đổi đầu ra sang trạng thái 1 hoặc 0 ổn định đều bị trìhoãn cho đến tco [8]

10

Trang 20

Ảnh hưởng của tính di động đến các mach kỹ thuật số:

Lý do chính dẫn đến tính di động trong các mạch kỹ thuật số là do vi phạm

về set-up time và hold-time Việc kết nối các tín hiệu không đồng bộ với hệ thốngđồng bộ là điều phổ biến trong các mạch kỹ thuật số và đây là tình trang phổ biếnnhất dẫn đến metastable trong các mạch kỹ thuật số

Một số nguyên nhân khác là:

e Tín hiệu truyền đến mạch khác trong cùng một hệ thống có hai tín hiệu

xung clock khác nhau hoặc lệch pha nhau.

e Khi rise-time và fall-time của tín hiệu xung clock lớn hơn giá tri cho

phép nó sẽ làm tăng giá trị skew và cũng như slew của clock Slew cànglớn càng làm tăng thời gian cần thiết để chuyên sang trang thái ôn địnhtrong các mach kỹ thuật s6

Để tránh tính di động trong các mạch kỹ thuật số, ta cần phải nhắc đếnMTBF Nó mô tả đặc tinh di động của flip-flop bang cách sử dụng số liệu thống kê

dé xác định xác suất xảy ra lỗi MTBF một phan dựa trên khoảng thời gian trong đó

sự thay đổi tín hiệu đầu vào khiến flip-flop trở nên không ồn định Tính toán MTBE

sử dụng tần số của tín hiệu đầu vào và cả tần số của xung clock điều khiến flip-flop.Tăng MTBF làm giảm khả năng xảy ra di động trong hệ thống Có thé cải thiệnMTBF trong mạch điện tử kỹ thuật SỐ bang cách sửa đổi thiết kế hoặc sử dụng các

phương pháp phù hợp [9].

Một giải pháp phổ biến dé khắc phục tính di động trong các mạch kỹ thuật số

đó là sử dụng phương pháp Synchronization Registers Khi tín hiệu truyền giữa các

miền xung clock không đồng bộ, cần phải đồng bộ hóa tín hiệu từ miền xung clock

cũ với miền xung clock mới trước khi có thể sử dụng tín hiệu đó một cách chính

xác Thanh ghi đầu tiên trong miền xung clock mới hoạt động như một thanh ghi

đồng bộ hóa

Dé giảm thiểu lỗi gây ra do tinh di động trong khi truyền tín hiệu không đồng

bộ, phương pháp thường được dùng là sử dụng một chuỗi các thanh ghi trong miềnxung clock đích dé đồng bộ lại tín hiệu khi sang miền xung clock mới Các thanh

11

Trang 21

ghi này có chức năng bổ sung thêm thời gian dé tín hiệu có khả năng bat ôn định trởnên 6n định trước khi chuyên đến các thành phần khác trong mạch.

Chuỗi các thanh ghi đồng bộ hóa phải đáp ứng các yêu cầu:

e Các thanh phi trong cũng một chuỗi đó phải được chạy trên cùng một tần

số xung clock hoặc nếu khác tan số xung clock thi các tần số xung clock

đó phải cùng pha với nhau.

e Thanh ghi đầu tiên trong chuỗi được điều khiến bởi tín hiệu từ miền xung

clock cần được đồng bộ hóa từ miền xung clock bất đồng bộ với chuỗi

các thanh ghi này.

e Độ dài của chuỗi thanh ghi đồng bộ là số lượng thanh ghi trong miền

xung clock đồng bộ đáp ứng được yêu cầu trên

Data

Clock domain 1 Clock domain 2

clk1 clk2

Hình 2.8: Đồng bộ tín hiệu bang hai thanh ghi [14]

Hình 2.8 mô ta cách sử dung và kết nối chuỗi thanh ghi đồng bộ dé ôn định

dữ liệu được gửi từ hai miền xung clock khác nhau sử dụng chuỗi gồm hai thanh

ghi.

Khi sử dụng mach đồng bộ sử dung hai thanh ghi như Hình 2.8 Một van dé

xảy đến khi dữ liệu gửi đi từ miền xung clock này đến miền xung clock khác có thé

có nhiều bit thay đổi, điều này có thé làm cho bộ đồng bộ hoạt động không đúng

Lúc này ta phải sử dụng đến Gray Code (được giới thiệu ở phần 2.2) để chỉ có mộtbit thay đổi khi gửi dit liệu từ miền xung clock này đến miền xung clock khác, dambao dữ liệu không bị sai lệch trong quá trình truyền

12

Trang 22

2.4 Vượt miền xung clock (Clock domain crossing)

SoC ngày nay đang ngày càng trở nên phức tạp hơn, rất nhiều chức năngdang được tích hợp vào chip và do đó dữ liệu thường xuyên được chuyền từ miềnxung clock này sang miền xung clock khác Do đó, việc thiết kế cũng như xác minhcác thiết kế vượt miền xung clock đã trở thành một trong những thách thức lớn

Miền xung clock là một phần của thiết kế kỹ thuật số hoặc hoạt động của hệthống trên tần số nhất định Vượt miền xung clock là vượt qua một ranh giới, trong

đó tín hiệu miền xung clock thứ nhất gặp tín hiệu của miền xung clock thứ hai Cácmiền không đồng bộ này có mối quan hệ không xác định giữa tần số hoặc pha dựatrên các đặc tính vật lý (độ ôn định jitter, nhiệt độ hoặc điện áp) của các nguồn xungclock này Các thông số này có thê thay đổi theo thời gian [10]

Điều này có thể dẫn đến các lỗi về thời gian như vi phạm set-up time và

hold-time được yêu cầu khi chuyên tín hiệu qua các ranh giới xung clock Các cônglogic có thé phản ứng theo ba cách với quá trình chuyên đổi tín hiệu: trạng tháiđúng của tín hiệu, trạng thái sai của tín hiệu và trạng thái tín hiệu không én định.Hiện tượng này chính là metastability, như được định nghĩa và nêu ra cách khắcphục ở phần 2.3

A B

| (2

bởi miên xung clock C1 và cân được miên xung clock C2 nhận vào đúng với giá tri được tạo ra boi Cl, tránh nhận vào các tín hiệu bi sai hoặc không ôn định, gây ảnh

hưởng đến độ chính xác của mạch khi hoạt động

13

Trang 23

2.5.1 Tổng quan về UVM

UVM là viết tat của Universal Verification Methodology Đây là mộtphương pháp được chuẩn hóa dé xác minh các thiết kế kỹ thuật số và hệ thống trên

chip (SoC) trong ngành bán dẫn UVM được xây dựng dựa trên ngôn ngữ

SystemVerilog và cung cấp một khuôn mẫu để tạo các module testbench, có thể tái

sử dụng và có thé dé dàng tích hợp vào quy trình kiểm tra thiết kế

UVM đã trở thành một tiêu chuẩn dé kiểm tra thiết kế trong ngành bán dẫn

và được các nhà thiệt kê chip và kỹ sư sử dụng rộng rãi đê kiêm tra tính chính xác

và chức năng của thiệt kê của ho.

UVM bao gồm một tập hợp các lớp cơ sở với các phương thức được xácđịnh trong đó, môi trường kiểm tra trong SystemVerilog có thé được phát triển bằng

cách kê thừa các lớp cơ sở này.

+ accept_tr / begin_tr / end_tr ()

+ Objection : raised / dropped () |.

uvm_sequence_item

+ set_sequencer / set_id_info()

+ uvm_report _info() /

Hình 2.10: Phân cap các lớp cơ sở trong UVM [18]

Hình 2.10 mô tả cấu trúc phân cấp lớp trong UVM bao gồm uvm void,

uvm_object, uvm_report_object,

uvm_sequence_item.

14

Trang 24

Uvm_void: Là một lớp trừu tượng không có thuộc tính hay phương thức nao.

Nó tạo ra các vùng chứa chung của các đối tượng, tương tự như con trỏ void trongngôn ngữ lập trình C Các lớp của người dùng kế thừa trực tiếp từ uvm_void không

kế thừa chức năng nào của UVM, nhưng các lớp như vậy có thé được đặt trong các

loại uvm_void container cùng với các UVM object khác cho phép chúng ta lưu trữ

và quản lý các đối tượng một cách thuận tiện.

Umv_object: Đây là lớp cơ sở ảo cho tất cả các components và transaction

trong UVM testbench uvm_object cung cấp các phương thức như như print, copy,compare, record dé cho phép người dùng có thé sử dụng trực tiếp, không cần phải

tạo thủ công các hàm trên.

Uvm report object: Uvm report object cung cấp chức năng báo cáo cho

UVM Các thông báo, lỗi hoặc cảnh báo quan trọng cho mục đích gỡ lỗi uvm report_object được UVM hỗ trợ.

dạng và tạo ra thông báo cuối cùng Báo cáo chỉ tiết sẽ bao gồm thông tin về ID,

mức độ chỉ tiết, và chuỗi thông báo cụ thể

Các loại macros cho uvm_report được mô tả ở bảng sau:

15

Trang 25

Bang 2.2: Các macros cho uvm_report Macros Cú pháp

Các mức Verbosity gôm những mức sau:

Bảng 2.3: UVM verbosity

Verbosity Mô tả

UVM_NONE Luôn luôn được in ra, câu hình verbosity không thê vô hiệu hóa

In thông báo nếu verbosity được định cấu hình là UVM LOW

UVM_LOW _

hoặc thâp hơn

In thông báo nếu verbosity được định cau hình là

UVM_MEDIUM ,

UVM_MEDIUM hoặc thâp hơn

In thông báo nếu verbosity được định câu hình là UVM_HIGH

UVM_HIGH :

hoặc thâp hơn

In thông báo nếu verbosity được định câu hình là UVM FULL

UVM_FULL

hoặc thâp hơn

UVM_DEBUG | In thông báo nếu verbosity được định cấu hình là UVM_DEBUG

Uvm_component: được sử dụng dé xây dựng cấu trúc phân cấp theo lớp chotestbench Uvm component là các thành phần tồn tại trong suốt quá trình môphỏng Lớp uvm_component là lớp cơ sở cho tất cả các thành phần UVM Cácthành phần lớp cơ sở có sẵn trong UVM bao gồm uvm env, uvm agent,

uvm_monitor, uvm_ driver, uvm_sequencer, v.V.

Uvm transaction: được sử dụng để tạo ra kích thích Các tài liệu khuyên

rằng nên dùng UVM sequence item thay vì sử dung UVM transaction

Uvm_sequence_item: kê thừa từ lớp uvm_transaction, chính là các test case

dé kiểm tra cho thiết kế

16

Trang 26

có thé bị hạn chế ở một số phần nhất định của testbench Ta có thé đặt bất kỳ loại

dữ liệu nào vào resource database bao gôm như biên kiêu string, int, bit, bat kỳ kiêu

dữ liệu gi trong verilog, hay thậm chi là các transaction, sequence item Sau đó một

component khác truy xuất nó sau này tại một thời điểm nào đó trong mô phỏng, đây

là một tính năng rất thuận tiện cần có dé trao đồi dữ liệu giữa các thành phần.

Các trường ở Hình 2.12 được mô tả rõ ở bảng bên dưới:

Bảng 2.4: Các trường bên trong một resource

Tên mà resource được lưu trữ trong database Tên tương tự phải được

Name rer,

cung cap dé lay no sau nay.

Value Giá trị cần được lưu trữ trong cơ sở dữ liệu cho tên đã cho

Một biểu thức chính quy chỉ định phạm vi mà tài nguyên này hiển thị

Seope với các thành phần khác trong testbench.

Kiểu dữ liệu của đối tượng chứa tài nguyên này Nó có thể là một

Type chuỗi, int, virtual interface, class object hoặc bat ky kiểu dữ liệu

SystemVerilog hợp lệ nào khác.

17

Trang 27

New resource Is pushed

to the back of queue/database

Front of i

the queue/DB object

Resource database lưu trữ đữ liệu theo tên va theo kiểu dữ liệu Vi vậy,resource có thé được truy xuất sau này theo tên hoặc kiểu dữ liệu Nhiều tài nguyên

có cùng tên hoặc kiểu dữ liệu được lưu trữ trong hàng đợi và do đó những tài

nguyên được đây vào trước sẽ được ưu tiên hơn những tài nguyên được thêm vào

sau Trong Hình 2.13, nếu một yêu cầu truy xuất một mục thuộc loại chuỗi được

thực hiện, hàng đợi sẽ được duyệt từ trước ra sau và lần xuất hiện đầu tiên của một

đối tượng thuộc loại chuỗi sẽ được trả ve.

Tài nguyên được thêm vào database bang cách gọi hàm set va chúng đượctruy xuất từ database bằng hàm get by name() hoặc getby_type() Một tinh năng

thú vị khác là nhóm resource database chứa lịch sử get Bất cứ khi nào một

component sử dụng các phương pháp trên đề truy xuất một đối tượng, nó sẽ được

ghi lại (cả thành công và thất bại), có thé được xuất ra khi kết thúc mô phỏng Day

có thé là một công cụ rat tốt trong quá trình gỡ lỗi

2.5.3 Cau trúc của UVM testbench

Cấu trúc của một UVM testbench gồm những thành phan:

e interface

e DUT

18

Trang 28

Uvm_sequence_item là một lớp cơ sở cho các đối tượng được định nghĩa bởi

người dùng để hoạt động trong cơ chế sequence của UVM Nó cũng là lớp cơ sởcho lớp uvm_sequence Uvm_sequence_item cung cấp các chức năng cơ ban chocác đối tượng, dé tạo ra các gói dữ liệu (transaction) và cung cấp chúng cho

uvm_sequencer đê dua đên uvm_ driver.

1 | class seq item extends uvm_seqeunce_ item;

2 rand int value;

3 rand color_type colors;

4 rand byte data[4];

5 rand bit [7:0] addr;

Trang 29

Hình trên là ví dụ về một uvm_sequence_item với 4 thuộc tính được khaibáo kiểu rand, những thuộc tính này sẽ được tạo với những giá trị ngẫu nhiên khi

UVM sequence tạo ra những UVM sequence item Các trường dữ liệu trong ví du trên sử dụng cách khai báo trong lớp là “uvm_ field”, với cách làm này lớp trên sẽ

không cần phải định nghĩa các hàm như sao chép, so sánh bởi vì có thể sử dụng cáchàm sao chép, so sánh có săn do UVM cung cấp Đối với trường hợp không sửdụng “uvm_field”, ta cần phải hiện thực thủ công các hàm sao chép, so sánh kể trên

UVM sequence là một container chứa các dữ liệu (uvm_sequence_items) được gửi đên driver thông qua sequencer.

Hình 2.16: Hệ thống phân cấp lớp của UVM sequence [18]

UVM sequence được kế thừa từ uvm sequence item Đây là nơi sẽ tạo ra

các sequence item với các trường input được ngẫu nhiên hóa.

Trang 30

UVM sequencer là người trung gian thiết lập kết nối giữa sequence va driver.Nhiệm vụ của nó là chuyên các transaction hoặc các sequence item tới driver.

Driver tương tác với DUT, nó đưa các transaction hoặc sequence item đã

được ngẫu nhiên hóa tới DUT như thông qua interface Driver phải được kế thừa từuvm_ driver Các transaction hoặc các sequence item được lấy từ sequencer sau đódriver đưa chúng tới thiết kế bằng cách sử dung interface handle

Driver còn gửi transaction hoặc sequence item đã được ngẫu nhiên hóa các

trường input được nhận từ sequencer ở giai đoạn trước tới scoreboard dé so sánh

với dữ liệu sau khi đi qua DUT.

UVM monitor là một thành phần thụ động được sử dụng dé thu thập tín hiệu

từ DUT thông qua virtual interface và chuyển đổi chúng thành transaction hoặc

sequence item sau khi DUT nhận tín hiệu từ driver và có output sẵn sàng Các

transaction hoặc sequence item này sau đó được truyền đến scoreboard đề so sánh

với các transaction hoặc sequence item đã được dự đoán output để kiểm tra tínhchính xác của thiết kế

Một agent là một container chứa và kết nối các phiên ban driver, monitor và

Active agent lái tín hiệu xuống DUT Nó khởi tạo cả ba thành phần

sequencer, driver và monitor.

21

Trang 31

Passive agent

Hình 2.19: Passive agent [18]

Passive agent không lái tín hiệu xuống cho DUT Nó chỉ khởi tao monitor

Nó được sử dụng như một interface cho mục đích bao phủ và kiểm tra

UVM scoreboard là thành phan nơi đó kiểm tra chức năng của DUT Nónhận các sequence item từ driver và dự đoán output cho sequence item đó ứng với trường input của nó, sau đó so sánh sequence item nay với sequence item nhận từmonitor Scoreboard sau khi so sánh các sequence item sẽ thông báo các kết quả củatừng trường hợp được kiểm tra, cụ thể là kết quả FAIL/PASS của từng cặpsequence item được so sánh UVM sẽ tự động tinh số UVM report gom fatal, error,info, v.v dé người dùng có thé tiện theo đối và kiêm tra Scoreboard so sánh cảtrường input va output dé tránh trường hợp input được gửi di bị sai trong quá trình

truyền.

Environment cung cấp một câu trúc phân cấp và là container cho các agent,scoreboard Là nơi kết nỗi các TLM port của driver với scoreboard, TLM port củamonitor với scoreboard.

Lop environment do người dùng định nghĩa phải được kế thừa từ lớp

uvm_env.

Test được đặt ở đầu cấu trúc phân cấp, tạo ra đối tượng của environment va

khởi tạo quá trình xây dựng environment vừa tạo ra đó.

Nó cũng chịu trách nhiệm cho việc cấu hình testbench và quá trình kíchthích Lớp test do người dùng định nghĩa phải được kế thừa từ lớp uvm test

Top testbench là một container chứa handle của DUT va interface Interface

này kết nối với tín hiệu của DUT trong top testbench Xung clock cũng được tạo tại

22

Trang 32

đây và được truyền đến DUT, nó cũng được truyền đến interface handle Mộtinterface được lưu trữ trong uvm_config_ db bằng cách sử dụng phương thức set và

có thé được lấy từ cấu trúc phân cấp sử dụng phương thức get Interface được tạo ra

ở đây và lưu vào resource database, khi chạy mô phỏng, driver va monitor sẽ lay ditliệu interface này từ resource database để sử dụng UVM testbench top cũng được

sử dung dé khởi chạy UVM Test băng lệnh run_test() dé chạy quá trình xác minh

23

Trang 33

CHƯƠNG 3 THIẾT KÉ VIDEO FRAME BUFEER

3.1 Kiến trúc hệ thống

Để lưu trữ được các pixel trong một khung hình video, bộ đệm video trong

đề tài này sử dụng 3 thành phần lưu trữ gồm hai FIFO bất đồng bộ và một Dual PortRAM Cùng với đó là các bộ converter có chức năng chuyên đổi dữ liệu pixel đầuvào thành dang 32 bit dé lưu trữ vào Dual Port RAM va sau đó là bộ chuyền đổi từ

dữ liệu 32 bit này thành định dạng ban đầu đề xuất ra

Pixel to Byte Dual Port RAM Byte to Pixel

Output Pixel Clock = = = h Tổ _T}_

Hình 3.1: Kiến trúc Video Frame Buffer

Hình 3.1 là kiến trúc của Video Frame Buffer trong đề tài này Hình này chothấy trong kiến trúc đang sử dụng 3 xung clock khác nhau để hoạt động, bao gồm:

e Input_pixel_clock: là tan số mà dữ liệu đầu vào sẽ được cấp vào IP.

e Byte_clock: là số xử lý bên trong IP

e Output_pixel_clock: tần số mà dữ liệu sẽ được xuất ra

Luéng dữ liệu trong IP được hoạt động như sau: dữ liệu ngõ vào khi đượcđưa vào IP sẽ được bộ Pixel To Byte xử lý trước tiên, trong đó dữ liệu sẽ được lưu

vào FIFO bat đồng bộ bên trong Pixel To Byte này, khi FIFO chứa được 1/3 kích

thước của FIFO, lúc này nó sẽ cho phép đọc dữ liệu và Pixel To Byte converter sé

lây dữ liệu này để xử lý Sau khi Pixel To Byte hoàn thành việc xử lý dữ liệu, nó sẽ

gửi dữ liệu đến Dual Port RAM để lưu trữ, tương tự như FIFO, khi Dual Port RAMlưu trữ được 1/3 dữ liệu thì nó mới cho phép đọc dé tiếp tục luồng dit liệu Dữ liệu

24

Trang 34

sau khi được lấy ra từ Dual Port RAM sẽ được khối Byte To Pixel xử lý, trong đóByte To Pixel converter sẽ xử lý dữ liệu và gửi dữ liệu đó đến FIFO bất đồng bộtrong khối Byte To Pixel để tiếp tục lưu trữ, FIFO này cũng yêu cầu phải chứa đủ

1/3 kích thước của FIFO thì mới được cho phép đọc dữ liệu Dữ liệu sau khi được

lay ra khỏi FIFO sẽ được gửi đến bộ Output Pixel Data, nếu dữ liệu là hợp lệ, nó sẽđược xuất ra dé sử dụng tùy theo mục đích của người sử dụng Chi tiết các module

sẽ được giải thích ở các phân dưới.

VIDEO FRAME BUFFER

————> input_pixel_clock output_pixel_data —Z>

—— » output_pixel_clock output valid data —————>

————> byte_clock hsync —_——y

—— yfStn vsync ————>

—— video_format P2B _FIFO full ———>

`" input_pixel_data ram_write_addr —_4—»

_ | valid_line ram_read_addr ——ZA—>»

——>y valid_frame ram_write_en —————>

_% ram_read_data ram_read_en _

P2B_byte_data 3,

Hình 3.2: Interface của kiến trúc Video Frame BufferHình 3.2 là interface của kiến trúc bộ đệm video trong dé tài này Ngõ vàogồm có các tín hiệu xung clock input_pixel_clock, output_pixel_clock, byte_clock,tín hiệu reset bất đồng bộ rst_n, video_format là tín hiệu xác định định dạng video

đang sử dụng, input_pixel_data là tín hiệu dữ liệu ngõ vào, valid line va valid_frame là hai tín hiệu chỉ định dong và khung hình hợp lệ của dữ liệu,

ram_read_data là dữ liệu được lay ra tr RAM Memory

Ngõ ra gồm có tín hiệu đữ liệu ngõ ra output_pixel_data, output_valid_data

là tín hiệu chỉ định dữ liệu được xuất ra là hợp lệ, hsync và vsync là hai tín hiệu

25

Trang 35

đồng bộ dòng và khung hình của dữ liệu đang được xuất ra P2B_FIFO_ full là tínhiệu xác định khi tat cả buffer trong thiết kế đều đã chức day dit liệu, khi đó bufferbên trong Pixel To Byte sẽ chứa đầy dir liệu, ram_ write_addr và read_addr lần lượt

là các địa chỉ ghi và đọc dữ liệu được tạo ra từ RAM Controller gửi đến RAMMemory, ram_write_en và ram _read_en là hai tín hiệu điều khiển việc cho phép

đọc và cho phép ghi dữ liệu vào RAM, P2B_byte_data là dữ liệu sau khi được Pixel

To Byte sau khi xử lý được gửi đến RAM để lưu trữ.

3.2 Sync detector

Sync detector là module hoạt động ở tần số input_pixel_clock Module nàynhận dữ liệu valid_line và valid_frame từ ngõ vào dé xác định dòng và khung hìnhhợp lệ của dữ liệu Khi dữ liệu được gửi đến cùng lúc với tín hiệu valid_line vàvalid_frame ở mức cao, có nghĩa dữ liệu được gửi đến đó đang ở dòng và khunghình hợp lệ, dữ liệu đó sẽ được xử lý và lưu trữ Ngược lại nếu dữ liệu được gửi khi

valid_line hoặc valid_frame ở mức thấp, dữ liệu đó sẽ được coi là không hợp lệ và

sẽ không được xử lý và lưu trữ.

Trong module này, hai tín hiệu output HSYNC và VSYNC sẽ chỉ định các

dòng dữ liệu và khung hình dữ liệu khi được xuất ra Khi có dòng dữ liệu mới,HSYNC sẽ chuyển sang mức cao và giữ trong một chu kỳ xung clock, và sau đóchuyển sang mức thấp và giữ ở mức thấp cho đến khi có dòng dit liệu tiếp theo.Tương tự với VSYNC, khi có khung hình dữ liệu mới, VSYNC sẽ chuyền sang mứccao và giữ giá trị đó trong một chu kỳ xung clock, và sau đó chuyên sang mức thấp

và giữ ở mức thấp cho đến khung hình dữ liệu tiếp theo

Trang 36

Hình 3.3 mô tả interface của module Sync Detector gồm những tín hiệu ngõ

vào clk, rstn, valid_line, valid_frame, valid_ data và những tín hiệu ngõ ra HSYNC,

VSYNC.

3.3 FIFO bat đồng bộ (Asynchronous FIFO)

FIFO (First In First Out), đề cập đến bộ nhớ đệm dữ liệu trong đó dữ liệu

được đưa vào trước sẽ được đưa ra trước Nó khác với các loại bộ nhớ thông thường như RAM là không có các tín hiệu địa chỉ đọc và địa chỉ ghi nên việc sử dụng trở

nên đơn giản hơn, nhưng nó có nhược điểm đó là chỉ hỗ trợ các thao tác ghi và đọc

tuần tự, bởi vì việc kiểm soát địa chỉ đọc và ghi đều được thực hiện ở bên trongFIFO, không như các bộ nhớ thông thường khác phải truyền địa chỉ đọc và địa chỉghi để có thể truy cập vào các ô nhớ

FIFO được chia ra làm hai loại chính đó là FIFO đồng bộ và FIFO bat đồng

Write Data, i wdata

Trang 37

sử dụng một xung clock duy nhất dé có thé hoạt động cho việc ghi và doc dữ liệu.

Loại FIFO còn lại đó chính là FIFO bất đồng bộ, cũng chính là loại FIFOđược sử dụng trong đề tài này Khác với FIFO đồng bộ chỉ sử dụng một xung clockcho cả hoạt động đọc và ghi dữ liệu, FIFO bất đồng bộ sử dụng hai nguồn xungclock khác nhau để ghi dữ liệu và doc dữ liệu Thông thường, FIFO bất đồng bộđược sử dụng trong các hệ thống nơi dữ liệu cần truyền từ miền xung clock này

sang mién xung clock khác, hiện tượng nay được gọi là CDC, đã được giới thiệu ở

phần 2.4 Với tính năng như vậy, FIFO bất đồng bộ giúp chúng ta có thể đồng bộhóa luồng dữ liệu giữa hai hệ thống hoạt động trên hai miền xung clock khác nhau

Đối với thiết kế FIFO đồng bộ, con trỏ địa chỉ sẽ thay đổi sau mỗi hoạt độngcủa FIFO Cu thê khi ghi dữ liệu vào FIFO nhưng không đọc dữ liệu, con trỏ này sẽ

được tăng lên, khi đọc dữ liệu ra FIFO mà không ghi dữ liệu mới, con trỏ này sẽ

được giảm xuống, và khi có hoạt động đọc và ghi dữ liệu cùng một lúc hoặc không

đọc và không ghi dữ liệu, lúc này con trỏ sẽ không đồi FIFO được xác định là đầykhi mà con trỏ nay đạt đến giá trị được xác định trước theo kích thước của FIFO vàFIFO rỗng khi con trỏ này bằng 0 Nhưng đối với thiết kế FIFO không đồng bộ,không thể sử dụng con trỏ như trên vì lúc này cần phải sử dụng hai xung clock khácnhau và chúng không đồng bộ với nhau Dé xác định FIFO day và rỗng cho thiết kếFIFO không đồng bộ, các con trỏ ghi và đọc sẽ phải được so sánh với nhau để xác

định được trạng thái hiện tại của FIFO.

Hoạt động của con trỏ ghi được thiết kế sao cho con trỏ ghi luôn trỏ đến địachỉ ghi tiếp theo, do đó khi reset, cả hai con trỏ đọc và ghi đều được đặt về 0 Trongthao tác ghi dữ liệu vào FIFO, vi trí bộ nhớ dang được trỏ tới bởi con trỏ ghi sẽ

được ghi dữ liệu mới vào, sau đó con trỏ này sẽ được tăng lên để chuẩn bị cho dữ

liệu được ghi tiếp theo

Tương tự, con trỏ đọc luôn trỏ đến từ địa chỉ cần đọc tiếp theo FIFO rỗngkhi mà con trỏ đọc đang trỏ đến dữ liệu không hợp lệ Ngay sau khi dữ liệu đầu tiênđược ghi vào FIFO, con trỏ ghi được tăng lên, lúc này cờ báo rỗng sẽ được tắt và

con trỏ đọc đang trỏ đến địa chỉ đầu tiên, lúc này dữ liệu sẽ hợp lệ dé sử dụng

28

Trang 38

FIFO rỗng khi mà lúc đó con trỏ đọc và ghi đều bằng nhau Trường hợp nàyxảy ra khi cả hai con trỏ được đặt lại về 0 khi reset hoặc khi con trỏ đọc bắt kip contrỏ ghi FIFO day khi các con trỏ lại bang nhau, tức là khi con trỏ ghi đã và bắt kịpcon trỏ đọc Điều này gây ra một vấn đề đó là khi FIFO đầy hay FIFO rỗng thì giátrị của con trỏ ghi đều băng giá trị của con trỏ đọc.

Giải thuật được sử dụng để phân biệt giữa khi FIFO đầy và FIFO rỗng làthêm một bit vào con trỏ đọc và con trỏ ghi Khi con trỏ ghi tăng dần và vượt qua

địa chỉ cuối cùng của FIFO, lúc này bit có trọng số cao nhất trong dia chỉ, cũng

chính là bit được thêm bổ sung vào sẽ bằng 1, còn các bit còn lại của con trỏ đềubằng 0, như được mô tả trong Hình 3.5 Tương tự với việc thực hiện con trỏ đọc.Nếu MSB của hai con trỏ khác nhau, điều đó có nghĩa là địa chỉ của con trỏ ghi đã

bị tràn và làm thay đổi MSB Nếu MSB của hai con trỏ giống nhau, điều đó có

nghĩa là cả hai con trỏ đêu có cùng sô lân tran bit giông nhau.

| B one more time

4 waddr points to 4 01 than the raddr

3 the next word 3 ce

to be written

2 2 BA

1 1 1 FF »

raddr —>| 0 <—waddr | raddr—>| 0 00|4— waddr

On reset, waddr<=0 EMPTY FULL

and raddr<=0 if (waddr == raddr); if (~waddr[4],waddr[3:0]} == raddr);

Hình 3.5: Tín hiệu đầy và rỗng trong FIFO bat đồng bộ [2]

Trong thiết kế FIFO bất đồng bộ này, dữ liệu cần được gửi từ miền xungclock này sang miền xung clock khác chính là con trỏ địa chỉ ghi dữ liệu và con trỏdia chỉ đọc dữ liệu Gia sử địa chỉ của FIFO sử dung 3 bit, địa chỉ của FIFO đó cóđược biểu diễn như Bang 3.1

29

Trang 39

Bảng 3.1: Dia chỉ cua FIFO với trường hợp FIFO sử dụng 3 bit dia chỉ

Vì vậy, dé có thé sử dụng phương pháp này, ta cần sử dụng gray code chocác con trỏ đọc và ghi dữ liệu để chỉ có một bit thay đổi khi gửi con trỏ từ miền

clock này sang miền clock khác, giúp địa chỉ đọc và ghi được gửi chính xác giữacác thành phan bên trong FIFO

wdata wdata rdata agin

wincewfull wfull «| ) wclken

Trang 40

Hình 3.6 là kiến trúc của FIFO bất đồng bộ được sử dụng trong đề tài này,

trong kiên trúc này sử dụng các module gôm:

Fifomem: là bộ nhớ FIFO nơi được truy cập bởi hai miền xung clock gồm

miền xung clock ghi và miền xung clock đọc Bộ nhớ này sẽ nhận địa chỉđược tạo từ các khối khác dé có thé ghi dữ liệu vào địa chỉ hoặc đọc dữ

liệu từ địa chỉ đó.

Sync_r2w: là module đồng bộ hóa được sử dụng dé đồng bộ hóa con trỏđọc từ miền xung clock đọc vào miền xung clock ghi Con trỏ đọc nàysau khi được đồng bộ hóa sẽ được gửi đến module wptr_full sử dụng đểtạo tín hiệu đầy của FIEO Module này được tạo nên từ các flip-flops hoạt

động ở miền xung clock đọc, không có chức năng về mặt logic

Sync_w2r: là module đồng bộ hóa được sử dụng dé đồng bộ hóa con trỏghi từ miền xung clock ghi vào miền xung clock đọc Con trỏ đọc này saukhi được đồng bộ hóa sẽ được gửi đến module wptr_empty sử dụng để

tạo tín hiệu rỗng của FIFO Tương tự như module sync_r2w, module nay

được tạo nên từ các flip-flops hoạt động ở miền xung clock ghi, cho nên

không có chức năng về mặt logic

Rptr_empty: module này hoạt động ở miền xung clock đọc, điều khiển

con trỏ đọc và cũng như tạo ra tín hiệu rỗng cho FIFO.

Wptr_full: module này hoạt động ở miền xung clock ghi, điều khiển contrỏ ghi và cũng như tạo ra tín hiệu đầy cho FIFO

Như giải thuật đã được trình bày phía trên, dé xác định được trạng thái đầy

và rong của FIFO, ta cân phải so sánh giá tri của hai con trỏ đọc và con trỏ ghi với

nhau Van đê xảy ra khi hai con trỏ nay được điêu khién bởi hai miên xung clock

khác nhau, khi đó dữ liệu gửi từ miền xung clock này sang miền xung clock khác

cần được gửi ở dang Gray code, không thể gửi đi ở dạng nhị phân vì có thé gây rasai lệch dữ liệu Cho nên ta không thể sử dụng cách so sánh con trỏ đọc và ghi nhưđược trình bày ở phần trên được, sự khác nhau được trình bày cụ thé hon trong

Bang 3.2 ở dưới.

31

Ngày đăng: 08/12/2024, 14:59

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN