SlideShare a Scribd company logo
1 of 158
Jpeg encoderJpeg encoder
Hardware implementationHardware implementation
with Verilogwith Verilog
Designed byDesigned by
Alon Cohen (alonc777@gmail.comAlon Cohen (alonc777@gmail.com((
Roi Biton, Yevgeny (Yoni) KhasinRoi Biton, Yevgeny (Yoni) Khasin
Ariela Huber, Shulamyt Ajamy, Moshe SzklarAriela Huber, Shulamyt Ajamy, Moshe Szklar
Directed byDirected by
Mr. Max NigriMr. Max Nigri
The Hebrew UniversityThe Hebrew University
of Jerusalemof Jerusalem
1
The projectThe project
imagerimager
JPEG
JPEGEncoder
Encoder
JPEG
File
RGB
Data
SD CARDSD CARD
))flashflash((Eye-On-Si® Ultra-compact
CMOS Digital Camera
Module
example
Jpeg encoder for digital cameraJpeg encoder for digital camera
example
2
Top diagramTop diagram
JPEGJPEG
EncoderEncoder
DateDate
shootshoot
RGBRGB
3
imagerimager
‫מ‬ ‫מידע‬ ‫הזרמת‬ ‫המדמה‬ ‫מודול‬‫מ‬ ‫מידע‬ ‫הזרמת‬ ‫המדמה‬ ‫מודול‬imagerimager
Data FormatData Format :: 8bit RGB8bit RGB‫מקבילי‬ ‫סינכרוני‬‫מקבילי‬ ‫סינכרוני‬
‫כניסה‬ ‫רגל‬‫כניסה‬ ‫רגל‬shootshoot.‫חדשה‬ ‫תמונה‬ ‫לשליחת‬ ‫טריגר‬ –.‫חדשה‬ ‫תמונה‬ ‫לשליחת‬ ‫טריגר‬ –
‫נשלח‬ ‫תמונה‬ ‫כל‬ ‫העברת‬ ‫לפני‬‫נשלח‬ ‫תמונה‬ ‫כל‬ ‫העברת‬ ‫לפני‬headerheader‫שם‬ ‫את‬ ‫המעביר‬‫שם‬ ‫את‬ ‫המעביר‬
.‫התמונה‬ ‫וממדי‬ ‫הקובץ‬.‫התמונה‬ ‫וממדי‬ ‫הקובץ‬
4
playerplayer
.‫תמונה‬ ‫לצילום‬ ‫כפתור‬ ‫לחיצת‬ ‫מיצר‬.‫תמונה‬ ‫לצילום‬ ‫כפתור‬ ‫לחיצת‬ ‫מיצר‬
‫בקוד‬ ‫תאריך‬ ‫מיצר‬‫בקוד‬ ‫תאריך‬ ‫מיצר‬ASCIIASCII..
: ‫התמונה‬ ‫איכות‬ ‫את‬ ‫קובע‬: ‫התמונה‬ ‫איכות‬ ‫את‬ ‫קובע‬quality factorquality factor
00––lowlow
11--midmid
22--highhigh
5
flashflash
.‫זיכרון‬ ‫כרטיס‬ ‫המדמה‬ ‫מודול‬.‫זיכרון‬ ‫כרטיס‬ ‫המדמה‬ ‫מודול‬
‫סינכרונית‬ ‫מקבילית‬ ‫תקשורת‬‫סינכרונית‬ ‫מקבילית‬ ‫תקשורת‬32bit32bit..
‫של‬ ‫לכתיבה‬ ‫אפשרות‬‫של‬ ‫לכתיבה‬ ‫אפשרות‬8,16,24,328,16,24,32BitBit‫עלית‬ ‫בכל‬‫עלית‬ ‫בכל‬
.‫שעון‬.‫שעון‬
‫העברת‬ ‫לפני‬ ‫מתבצעת‬ ‫הקובץ‬ ‫שם‬ ‫העברת‬‫העברת‬ ‫לפני‬ ‫מתבצעת‬ ‫הקובץ‬ ‫שם‬ ‫העברת‬
.‫המידע‬.‫המידע‬
6
encoderencoder
‫לפורמט‬ ‫תמונה‬ ‫מקודד‬‫לפורמט‬ ‫תמונה‬ ‫מקודד‬jpg filejpg file..
‫בפורמט‬ ‫תמונה‬ :‫כניסה‬‫בפורמט‬ ‫תמונה‬ :‫כניסה‬RGBRGB) ‫טורי‬ ‫באופן‬ ,) ‫טורי‬ ‫באופן‬ ,datadata
8bit8bit.(.(
‫סינכרונית‬ ‫כתיבה‬ :‫מוצא‬‫סינכרונית‬ ‫כתיבה‬ :‫מוצא‬32bit data32bit data‫לזיכרון‬‫לזיכרון‬flashflash..
:‫בקרות‬:‫בקרות‬
Quality factorQuality factor–‫איכות‬ ‫לקביעת‬ ‫ביטים‬ ‫שני‬–‫איכות‬ ‫לקביעת‬ ‫ביטים‬ ‫שני‬
‫.התמונה‬‫.התמונה‬
Date(64bitDate(64bit))–‫בקוד‬ ‫תאריך‬ ‫הכנסת‬–‫בקוד‬ ‫תאריך‬ ‫הכנסת‬ASCIIASCII..
ShootShoot‫תמונה‬ ‫לצילום‬ ‫.טריגר‬‫תמונה‬ ‫לצילום‬ ‫.טריגר‬
JPEG
JPEGEncoder
Encoder
7
EncoderEncoder
Block diagram & conceptBlock diagram & concept
8
Encoder Block diagramEncoder Block diagram
QuantizationQuantization
DCTDCT
&&
ZIGZAGZIGZAG
RLCRLC
&&
DPCMDPCM
DCTDCT
ClientClient
TripleTriple
FIFOFIFO
ControlControl
RGB toRGB to
YCbCrYCbCr
ARBARB
RAMRAM
BlocksBlocks
Wr PixelsWr Pixels
ClientClient
DateDate
StamperStamper
AlinerAlinerInt to floatInt to float
Clk dividerClk divider
Quan ROMQuan ROM
TBTB
FIFOFIFO
writerwriter
HuffmanHuffman
codecode
Serial toSerial to
paralelparalel
FlashFlash
writerwriter
DCTDCT
ROMROM
9
‫מודולים‬ ‫בין‬ ‫תקשורת‬‫מודולים‬ ‫בין‬ ‫תקשורת‬
‫השונים‬ ‫המודולים‬ ‫בין‬ ‫המידע‬ ‫להעברת‬ ‫אחיד‬ ‫תקן‬‫השונים‬ ‫המודולים‬ ‫בין‬ ‫המידע‬ ‫להעברת‬ ‫אחיד‬ ‫תקן‬
spen_in/spen_outspen_in/spen_out–' ‫ב‬ ‫נמצא‬–' ‫ב‬ ‫נמצא‬11‫בלוקתמונה‬ ‫מועבר‬ ‫עוד‬ ‫כל‬ '.‫בלוקתמונה‬ ‫מועבר‬ ‫עוד‬ ‫כל‬ '.
d_in_valid/d_out_validd_in_valid/d_out_valid–'1–'1' ‫הנוכחית‬ ‫השעון‬ ‫עלית‬ ‫עבור‬ ‫תקף‬ ‫מידע‬ ‫.מציין‬' ‫הנוכחית‬ ‫השעון‬ ‫עלית‬ ‫עבור‬ ‫תקף‬ ‫מידע‬ ‫.מציין‬
rstrst–‫המודול‬ ‫.אתחול‬–‫המודול‬ ‫.אתחול‬
mclkmclk–‫המודול‬ ‫של‬ ‫עבודה‬ ‫.שעון‬–‫המודול‬ ‫של‬ ‫עבודה‬ ‫.שעון‬
‫בלוק‬ ‫תחילת‬ ‫בלוק‬ ‫סוף‬‫תקף‬ ‫מידע‬
10
‫ברצף‬ ‫תמונות‬ ‫צילום‬‫ברצף‬ ‫תמונות‬ ‫צילום‬
Shoot‫תמונה‬ ‫לצילום‬
‫חדשה‬
Busy‫ה‬ ‫כי‬ ‫מציין‬
encoder‫באמצע‬
‫עבודה‬
‫ה‬ ‫בכניסת‬ ‫הבלוקים‬
DCT
‫קובץ‬ ‫סיום‬
‫נלחץ‬ ‫לא‬shoot
‫מועברת‬ ‫תמונה‬ ‫אין‬
pxq‫בזמן‬ ‫דלוק‬
‫המידע‬ ‫העברת‬
11
Block diagram – data flowBlock diagram – data flow
‫מה‬ ‫המידע‬ ‫כניסת‬ ,‫שמאל‬ ‫מצד‬‫מה‬ ‫המידע‬ ‫כניסת‬ ,‫שמאל‬ ‫מצד‬imagerimager..
Int to floatInt to float– ‫מ‬ ‫המידע‬ ‫את‬ ‫ממיר‬– ‫מ‬ ‫המידע‬ ‫את‬ ‫ממיר‬8bit data8bit data‫ל‬‫ל‬floating point 24floating point 24
bitbit..
AlinerAliner‫טורי‬ ‫מקבל‬‫טורי‬ ‫מקבל‬R,G,BR,G,B‫שלשה‬ ‫ומוציא‬‫שלשה‬ ‫ומוציא‬}}R,G,BR,G,B{{‫כל‬ ‫מיושרים‬‫כל‬ ‫מיושרים‬33
‫.שעונים‬‫.שעונים‬
12
Block diagram – data flowBlock diagram – data flow
Date stamperDate stamper‫של‬ ‫הדפסה‬ ‫מבצע‬‫של‬ ‫הדפסה‬ ‫מבצע‬
‫כדי‬ ‫תוך‬ ‫התמונה‬ ‫לתוך‬ ‫תאריך‬‫כדי‬ ‫תוך‬ ‫התמונה‬ ‫לתוך‬ ‫תאריך‬
‫המידע‬ ‫.זרימת‬‫המידע‬ ‫.זרימת‬
‫למודול‬ ‫מחוץ‬ ‫מתקבל‬ ‫התאריך‬‫למודול‬ ‫מחוץ‬ ‫מתקבל‬ ‫התאריך‬
‫בפורמט‬‫בפורמט‬ASCIIASCII‫של‬ ‫מקבילי‬ ‫קו‬ ‫ע"י‬‫של‬ ‫מקבילי‬ ‫קו‬ ‫ע"י‬
64bit64bit..
‫מתיחה‬ ‫לבצע‬ ‫פרמטרים‬ ‫ע"י‬ ‫נתן‬‫מתיחה‬ ‫לבצע‬ ‫פרמטרים‬ ‫ע"י‬ ‫נתן‬
.‫לתאריך‬ ‫ורוחבי‬ ‫אופקי‬ ‫וכיווץ‬.‫לתאריך‬ ‫ורוחבי‬ ‫אופקי‬ ‫וכיווץ‬
‫ה‬ ‫כל‬ ‫את‬ ‫להדפיס‬ ‫נתן‬‫ה‬ ‫כל‬ ‫את‬ ‫להדפיס‬ ‫נתן‬A,B,CA,B,C
13
Block diagram – data flowBlock diagram – data flow
RGBtoYCbCrRGBtoYCbCr– ‫לפורמט‬ ‫המרה‬ ‫המבצע‬ ‫מודול‬– ‫לפורמט‬ ‫המרה‬ ‫המבצע‬ ‫מודול‬Y,Cb,CrY,Cb,Cr‫ו‬‫ו‬offsetoffset‫של‬‫של‬--128128‫הכפלה‬ ‫ע"י‬‫הכפלה‬ ‫ע"י‬
‫.במטריצה‬‫.במטריצה‬
Wr Pixel ClientWr Pixel Client‫לזיכרון‬ ‫שורה‬ ‫אחר‬ ‫שורה‬ ‫המידע‬ ‫של‬ ‫כתיבה‬ ‫מבצע‬‫לזיכרון‬ ‫שורה‬ ‫אחר‬ ‫שורה‬ ‫המידע‬ ‫של‬ ‫כתיבה‬ ‫מבצע‬RAMRAM‫ציקלית‬ ‫בצורה‬‫ציקלית‬ ‫בצורה‬
‫פולס‬ ‫ומייצר‬‫פולס‬ ‫ומייצר‬startstart‫של‬ ‫כתיבה‬ ‫סיום‬ ‫כל‬ ‫עם‬‫של‬ ‫כתיבה‬ ‫סיום‬ ‫כל‬ ‫עם‬88‫שורות‬ .‫שורות‬ .
‫כל‬ ‫של‬ ‫ההתחלתית‬ ‫הכתובת‬ ‫את‬ ‫מספק‬ ‫בנוסף‬‫כל‬ ‫של‬ ‫ההתחלתית‬ ‫הכתובת‬ ‫את‬ ‫מספק‬ ‫בנוסף‬88‫כל‬ ‫עם‬ ‫שורות‬‫כל‬ ‫עם‬ ‫שורות‬startstart.‫סנכרון‬ ‫לצורך‬.‫סנכרון‬ ‫לצורך‬
To ARBTo ARB14
Block diagram – data flowBlock diagram – data flow
RAM BlocksRAM Blocks– ‫מ‬ ‫המגיעה‬ ‫התמונה‬ ‫של‬ ‫המידע‬ ‫שורות‬ ‫את‬ ‫מאחסן‬ –– ‫מ‬ ‫המגיעה‬ ‫התמונה‬ ‫של‬ ‫המידע‬ ‫שורות‬ ‫את‬ ‫מאחסן‬ –wr pixels clientwr pixels client..
ARBARB– ‫ל‬ ‫ארביטרציה‬– ‫ל‬ ‫ארביטרציה‬RAMRAM‫עם‬‫עם‬strict prioritystrict priority‫ל‬‫ל‬wr pixels clientwr pixels client..
DCT ClientDCT Client– ‫מה‬ ‫המידע‬ ‫רצועות‬ ‫את‬ ‫מושך‬– ‫מה‬ ‫המידע‬ ‫רצועות‬ ‫את‬ ‫מושך‬RAMRAM‫של‬ ‫בפורמט‬‫של‬ ‫בפורמט‬blocks 8x8blocks 8x8
‫המידע‬ ‫משיכת‬ ‫סדר‬‫המידע‬ ‫משיכת‬ ‫סדר‬top to down and left to righttop to down and left to right..
‫וסגנל‬ ‫התחלתית‬ ‫כתובת‬ ‫מקבל‬‫וסגנל‬ ‫התחלתית‬ ‫כתובת‬ ‫מקבל‬startstart.‫הקריאה‬ ‫וזמן‬ ‫כתובת‬ ‫לסימון‬.‫הקריאה‬ ‫וזמן‬ ‫כתובת‬ ‫לסימון‬
From wrFrom wr
pixels clientpixels client
To DCTTo DCT
15
Block diagram – data flowBlock diagram – data flow
‫ביצוע‬‫ביצוע‬DCTDCT‫על‬ ‫במקביל‬‫על‬ ‫במקביל‬Y,Cb,CrY,Cb,Cr..
‫מימין‬ ‫מקדמים‬ ‫במטריצת‬ ‫הכפלה‬ ‫ע"י‬ ‫ביצוע‬‫מימין‬ ‫מקדמים‬ ‫במטריצת‬ ‫הכפלה‬ ‫ע"י‬ ‫ביצוע‬
‫בזיכרון‬ ‫השמורה‬ ‫ומשמאל‬‫בזיכרון‬ ‫השמורה‬ ‫ומשמאל‬ROMROM‫חיצוני‬‫חיצוני‬
.‫המודולים‬ ‫לשלושת‬.‫המודולים‬ ‫לשלושת‬
BlockBlock
16
Block diagram – data flowBlock diagram – data flow
‫ביצוע‬‫ביצוע‬QuantizationQuantization‫על‬ ‫במקביל‬‫על‬ ‫במקביל‬Y,Cb,CrY,Cb,Cr..
‫איכויות‬ ‫שלושה‬ ‫עבור‬ ‫הקוונטיזציה‬ ‫טבלאות‬‫איכויות‬ ‫שלושה‬ ‫עבור‬ ‫הקוונטיזציה‬ ‫טבלאות‬
‫ב‬ ‫שמורות‬‫ב‬ ‫שמורות‬ROMROM‫ה‬ ‫למודולי‬ ‫חיצוני‬‫ה‬ ‫למודולי‬ ‫חיצוני‬
QuantizationQuantization..
‫מודול‬‫מודול‬quan_table_swquan_table_sw‫מוסיף‬‫מוסיף‬offsetoffset‫מתאים‬‫מתאים‬
‫ב‬ ‫לכתובת‬‫ב‬ ‫לכתובת‬ROMROM‫ל‬ ‫בהתאם‬‫ל‬ ‫בהתאם‬2bit quality factor2bit quality factor
‫למודול‬ ‫מחוץ‬ ‫המגיע‬‫למודול‬ ‫מחוץ‬ ‫המגיע‬encoderencoder..
‫טבלאות‬‫טבלאות‬chrom & lumchrom & lum‫שע"י‬ ‫כך‬ ‫לאורך‬ ‫שמורות‬‫שע"י‬ ‫כך‬ ‫לאורך‬ ‫שמורות‬
‫ה‬ ‫במוצא‬ ‫מתאים‬ ‫חיווט‬‫ה‬ ‫במוצא‬ ‫מתאים‬ ‫חיווט‬ROMROM‫מודול‬ ‫כל‬‫מודול‬ ‫כל‬quanquan
.‫לו‬ ‫המתאים‬ ‫המידע‬ ‫את‬ ‫מקבל‬.‫לו‬ ‫המתאים‬ ‫המידע‬ ‫את‬ ‫מקבל‬
17
Quality factorQuality factor
‫היא‬ ‫הקוונטיזציה‬ ‫פעולת‬‫היא‬ ‫הקוונטיזציה‬ ‫פעולת‬
‫הקוונטיזציה‬ ‫בטבלת‬ ‫הכפלה‬‫הקוונטיזציה‬ ‫בטבלת‬ ‫הכפלה‬
.‫התוצאה‬ ‫ועיגול‬.‫התוצאה‬ ‫ועיגול‬
‫שלושה‬ ‫בין‬ ‫השוואה‬ ‫להלן‬‫שלושה‬ ‫בין‬ ‫השוואה‬ ‫להלן‬
:‫שונות‬ ‫איכויות‬:‫שונות‬ ‫איכויות‬
Medium(8k)
Value/(0.5*table)
Low(5.45k)
value/table
High(11.5k)
Value/(0.25*table)
Bmp(54k)
18
Block diagram – data flowBlock diagram – data flow
RLERLE -- Run Length EncodeRun Length Encode
DPCMDPCM -- Differential Pulse CodeDifferential Pulse Code
ModulationModulation
‫האפליקציות‬ ‫שני‬ ‫את‬ ‫המממש‬ ‫מודול‬‫האפליקציות‬ ‫שני‬ ‫את‬ ‫המממש‬ ‫מודול‬
RLE & DPCMRLE & DPCM..
‫המבצע‬ ‫למודול‬ ‫מתחברים‬ ‫מוצאים‬‫המבצע‬ ‫למודול‬ ‫מתחברים‬ ‫מוצאים‬
‫ל‬ ‫כתיבה‬‫ל‬ ‫כתיבה‬FIFOFIFO
‫במוצא‬ ‫המידע‬ ‫כמות‬ ‫כי‬ ‫לראות‬ ‫ניתן‬‫במוצא‬ ‫המידע‬ ‫כמות‬ ‫כי‬ ‫לראות‬ ‫ניתן‬
‫המידע‬ ‫מכמות‬ ‫בהרבה‬ ‫קטנה‬‫המידע‬ ‫מכמות‬ ‫בהרבה‬ ‫קטנה‬
.‫בכניסה‬.‫בכניסה‬
BlockBlock
19
Block diagram – data flowBlock diagram – data flow
FIFO WriterFIFO Writer
‫ערוצי‬ ‫שלושת‬ ‫את‬ ‫מקבל‬‫ערוצי‬ ‫שלושת‬ ‫את‬ ‫מקבל‬
‫ריבוב‬ ‫ומבצע‬ ‫המידע‬‫ריבוב‬ ‫ומבצע‬ ‫המידע‬
‫ל‬ ‫וכתיבה‬ ‫שלהם‬‫ל‬ ‫וכתיבה‬ ‫שלהם‬tripletriple
fifofifo..
Super FIFOSuper FIFO
‫סקטורים‬ ‫שלושה‬ ‫מכיל‬ –‫סקטורים‬ ‫שלושה‬ ‫מכיל‬ –
‫על‬ ‫הממומשים‬ ‫זיכרון‬ ‫של‬‫על‬ ‫הממומשים‬ ‫זיכרון‬ ‫של‬
‫גבי‬‫גבי‬RAMRAM.‫אחד‬.‫אחד‬
‫שלם‬ ‫בלוק‬ ‫מגיע‬ ‫כאשר‬‫שלם‬ ‫בלוק‬ ‫מגיע‬ ‫כאשר‬
‫במוצא‬ ‫יוצאים‬ ‫הבלוקים‬‫במוצא‬ ‫יוצאים‬ ‫הבלוקים‬
‫בהתאם‬ ‫השני‬ ‫אחרי‬ ‫אחד‬‫בהתאם‬ ‫השני‬ ‫אחרי‬ ‫אחד‬
.‫קריאה‬ ‫לבקשת‬.‫קריאה‬ ‫לבקשת‬
‫בלוק‬ ‫וסוף‬ ‫תחילה‬ ‫סימון‬‫בלוק‬ ‫וסוף‬ ‫תחילה‬ ‫סימון‬
‫ביטים‬ ‫שני‬ ‫ע"י‬ ‫מתבצעים‬‫ביטים‬ ‫שני‬ ‫ע"י‬ ‫מתבצעים‬
‫חלק‬ ‫שהם‬ ‫ראשונים‬‫חלק‬ ‫שהם‬ ‫ראשונים‬
.‫המידע‬ ‫מרגיסטרי‬.‫המידע‬ ‫מרגיסטרי‬
‫שכמות‬ ‫לראות‬ ‫ניתן‬‫שכמות‬ ‫לראות‬ ‫ניתן‬
‫אחד‬ ‫בכל‬ ‫שונה‬ ‫המידע‬‫אחד‬ ‫בכל‬ ‫שונה‬ ‫המידע‬
‫מהמסלולים‬‫מהמסלולים‬
20
Block diagram – data flowBlock diagram – data flow
‫ב‬ ‫השמורות‬ ‫טבלאות‬ ‫ע"י‬ ‫המידע‬ ‫של‬ ‫הופמן‬ ‫קידוד‬‫ב‬ ‫השמורות‬ ‫טבלאות‬ ‫ע"י‬ ‫המידע‬ ‫של‬ ‫הופמן‬ ‫קידוד‬ROMROM‫ביטים‬ ‫עם‬ ‫המקודד‬ ‫המידע‬ ‫של‬ ‫והוצאה‬‫ביטים‬ ‫עם‬ ‫המקודד‬ ‫המידע‬ ‫של‬ ‫והוצאה‬
.‫הרלוונטי‬ ‫המידע‬ ‫אורך‬ ‫לציון‬.‫הרלוונטי‬ ‫המידע‬ ‫אורך‬ ‫לציון‬
Serial to paralelSerial to paralel– ‫אחיד‬ ‫באורך‬ ‫מידע‬ ‫ומוציא‬ ‫השונים‬ ‫באורכים‬ ‫הביטים‬ ‫את‬ ‫טורית‬ ‫בצורה‬ ‫אוסף‬– ‫אחיד‬ ‫באורך‬ ‫מידע‬ ‫ומוציא‬ ‫השונים‬ ‫באורכים‬ ‫הביטים‬ ‫את‬ ‫טורית‬ ‫בצורה‬ ‫אוסף‬
‫של‬‫של‬32bit32bit‫ל‬ ‫לכתיבה‬‫ל‬ ‫לכתיבה‬flashflash
21
Block diagram – data flowBlock diagram – data flow
Flash writerFlash writer– ‫ו‬ ‫הקובץ‬ ‫שם‬ ‫של‬ ‫וכתיבה‬ ‫יצור‬– ‫ו‬ ‫הקובץ‬ ‫שם‬ ‫של‬ ‫וכתיבה‬ ‫יצור‬headerheader‫ל‬‫ל‬jpeg filejpeg file..
‫מה‬ ‫המגיע‬ ‫המידע‬ ‫כתיבת‬‫מה‬ ‫המגיע‬ ‫המידע‬ ‫כתיבת‬serial to paralelserial to paralel.‫בקובץ‬ ‫המתאים‬ ‫למקום‬.‫בקובץ‬ ‫המתאים‬ ‫למקום‬
22
ROM & RAM CalculationROM & RAM Calculation
Date Stamper ROMDate Stamper ROM
255255‫תווי‬‫תווי‬ASCIIASCII‫תו‬ ‫כל‬ ,‫תו‬ ‫כל‬ ,5x5bit5x5bit
255255**55**5/85/8==797byte797byte
:‫מבנה‬:‫מבנה‬5bit x 1275 rows5bit x 1275 rows
11bit address11bit address
RAM BlocksRAM Blocks
‫מה‬ ‫דרישה‬‫מה‬ ‫דרישה‬DCTDCT‫כל‬ ‫בין‬ ‫לרווח‬‫כל‬ ‫בין‬ ‫לרווח‬data_validdata_valid:‫במוצא‬:‫במוצא‬88cyclescycles
‫מה‬ ‫דרישה‬‫מה‬ ‫דרישה‬DCTDCT‫הבלוקים‬ ‫בין‬ ‫מחזורים‬ '‫למס‬‫הבלוקים‬ ‫בין‬ ‫מחזורים‬ '‫למס‬627627
‫בלוק‬ ‫במעבר‬ ‫מחזורים‬ '‫מס‬‫בלוק‬ ‫במעבר‬ ‫מחזורים‬ '‫מס‬6666**88==528528
:‫בלוקים‬ ‫בין‬ ‫השהייה‬ ‫כלל‬ ‫לבלוק‬ ‫דרושים‬ ‫מחזורים‬ ‫סה"כ‬:‫בלוקים‬ ‫בין‬ ‫השהייה‬ ‫כלל‬ ‫לבלוק‬ ‫דרושים‬ ‫מחזורים‬ ‫סה"כ‬11551155
‫באורך‬ ‫רצועה‬ ‫לפינויי‬ ‫שעון‬ ‫מחזורי‬ ‫סה"כ‬‫באורך‬ ‫רצועה‬ ‫לפינויי‬ ‫שעון‬ ‫מחזורי‬ ‫סה"כ‬10241024::11551155)*)*1024/81024/8=(=(147840147840
:‫זה‬ ‫בזמן‬ ‫שיכתבו‬ ‫זיכרון‬ ‫שורות‬ ‫סה"כ‬:‫זה‬ ‫בזמן‬ ‫שיכתבו‬ ‫זיכרון‬ ‫שורות‬ ‫סה"כ‬147840/8/3147840/8/3==61606160
: ‫שדרושות‬ ‫זיכרון‬ ‫שורות‬ '‫מס‬ ‫סה"כ‬: ‫שדרושות‬ ‫זיכרון‬ ‫שורות‬ '‫מס‬ ‫סה"כ‬1024pix*8+6160=143521024pix*8+6160=14352
‫הוא‬ ‫הדרוש‬ ‫הזיכרון‬ ‫גודל‬ ‫לכן‬‫הוא‬ ‫הדרוש‬ ‫הזיכרון‬ ‫גודל‬ ‫לכן‬14352rows*72bit =14352rows*72bit = 126kb126kb
14bit address14bit address 23
ROM & RAM CalculationROM & RAM Calculation
DCT ROM – commonDCT ROM – common
.‫ההמרה‬ ‫לביצוע‬ ‫המטריצה‬ ‫להחזקת‬ ‫משמש‬.‫ההמרה‬ ‫לביצוע‬ ‫המטריצה‬ ‫להחזקת‬ ‫משמש‬
6464value of 24bit floating pointvalue of 24bit floating point
Size = 64*24/8 =Size = 64*24/8 = 192byte192byte
66bit addressbit address
DCT RAMDCT RAM
.‫ראשונה‬ ‫הכפלה‬ ‫לאחר‬ ‫המתקבלת‬ ‫המטריצה‬ ‫לשמירת‬ ‫משמש‬.‫ראשונה‬ ‫הכפלה‬ ‫לאחר‬ ‫המתקבלת‬ ‫המטריצה‬ ‫לשמירת‬ ‫משמש‬
6464value of 24bit floating pointvalue of 24bit floating point
Size = 64*24/8 =Size = 64*24/8 = 192byte192byte
66bit addressbit address
24
ROM & RAM CalculationROM & RAM Calculation
Quantization ROM – commonQuantization ROM – common
) ‫זוגות‬ ‫שלושה‬ ‫להחזקת‬ ‫משמש‬) ‫זוגות‬ ‫שלושה‬ ‫להחזקת‬ ‫משמש‬luma & chromeluma & chrome‫איכות‬ ‫דרגות‬ ‫שלושה‬ ‫עבור‬ ‫קבועים‬ ‫מטריצות‬ (‫איכות‬ ‫דרגות‬ ‫שלושה‬ ‫עבור‬ ‫קבועים‬ ‫מטריצות‬ (
.‫לתמונה‬.‫לתמונה‬
6464**33==192192rows of 2*24bit floating pointrows of 2*24bit floating point
Size = 64*3*2*24/8 =Size = 64*3*2*24/8 = 1152byte1152byte
88bit addressbit address
Super FIFO Dual port RAMSuper FIFO Dual port RAM
‫המסלולים‬ ‫שלושת‬ ‫של‬ ‫המידע‬ ‫לשמירת‬ ‫משמש‬‫המסלולים‬ ‫שלושת‬ ‫של‬ ‫המידע‬ ‫לשמירת‬ ‫משמש‬Y,Cb,CrY,Cb,Cr‫גם‬ ‫מאפשר‬ .‫מחדש‬ ‫שלהם‬ ‫איחוד‬ ‫לצורך‬‫גם‬ ‫מאפשר‬ .‫מחדש‬ ‫שלהם‬ ‫איחוד‬ ‫לצורך‬
‫ל‬ ‫הכתיבה‬ ‫פעולת‬ ‫של‬ ‫השהייה‬‫ל‬ ‫הכתיבה‬ ‫פעולת‬ ‫של‬ ‫השהייה‬FlashFlash..
‫מה‬ ‫מקסימאלית‬ ‫השהייה‬‫מה‬ ‫מקסימאלית‬ ‫השהייה‬flashflash‫ל‬ ‫מותאמת‬‫ל‬ ‫מותאמת‬80cycles80cycles‫של‬ ‫תוספת‬ ‫דרושה‬ ‫לכן‬‫של‬ ‫תוספת‬ ‫דרושה‬ ‫לכן‬
80/880/8==1010rows per sectorrows per sector
‫ל‬ ‫בנוסף‬‫ל‬ ‫בנוסף‬Cb, CrCb, Cr‫עוד‬ ‫דרושים‬‫עוד‬ ‫דרושים‬6464**22==128128rowsrows‫ועוד‬‫ועוד‬22rowsrows‫ל‬‫ל‬YY
:‫סה"כ‬:‫סה"כ‬1010**3+643+64**2+22+2==160160
159159rows * 21bit =rows * 21bit = 420byte420byte
8bit address8bit address
25
ROM & RAM CalculationROM & RAM Calculation
Huffman table ROMHuffman table ROM
‫הופמן‬ ‫קידוד‬ ‫לביצוע‬ ‫הערכים‬ ‫טבלת‬ ‫את‬ ‫מחזיק‬‫הופמן‬ ‫קידוד‬ ‫לביצוע‬ ‫הערכים‬ ‫טבלת‬ ‫את‬ ‫מחזיק‬
Chrominance DC – 12 rowsChrominance DC – 12 rows
Luminance DC – 12 rowsLuminance DC – 12 rows
Chrominance AC – 163 rowsChrominance AC – 163 rows
Luminance AC – 163 rowsLuminance AC – 163 rows
Sum: 350 rows * 20bit =Sum: 350 rows * 20bit = 875byte875byte
9bit address9bit address
Flash writer ROMFlash writer ROM
‫ה‬ ‫את‬ ‫מחזיק‬‫ה‬ ‫את‬ ‫מחזיק‬HeaderHeader‫ה‬ ‫קובץ‬ ‫בתחילת‬ ‫שנכתב‬‫ה‬ ‫קובץ‬ ‫בתחילת‬ ‫שנכתב‬jpegjpeg‫עבור‬ ‫הדחוסות‬ ‫הקוונטיזציה‬ ‫טבלאות‬ ‫ואת‬‫עבור‬ ‫הדחוסות‬ ‫הקוונטיזציה‬ ‫טבלאות‬ ‫ואת‬
.‫במערכת‬ ‫הנתמכות‬ ‫האיכויות‬ ‫שלושת‬.‫במערכת‬ ‫הנתמכות‬ ‫האיכויות‬ ‫שלושת‬
881881rows * 8bit =rows * 8bit = 881bytes881bytes
10bit address10bit address
26
ROM & RAM summaryROM & RAM summary
RAM Blocks = 126KbyteRAM Blocks = 126Kbyte!! All otherAll other
ROM = 3.8kbROM = 3.8kb
RAM = 0.6kbRAM = 0.6kb
27
ModulesModules
implementationimplementation
28
Advanced FeatureAdvanced Feature
Date StamperDate Stamper
‫כל‬ ‫להדביק‬ ‫אפשרות‬ :‫המידע‬ ‫מעבר‬ ‫בזמן‬ ‫לתמונה‬ ‫תאריך‬ ‫הדבקת‬font
‫ב‬ ‫השמור‬ROM‫את‬ ‫ולקבוע‬ ‫ורוחבית‬ ‫אורכית‬ ‫מתיחה‬ ‫לבצע‬ ‫ניתן‬ .‫מיועד‬
.‫מובנים‬ ‫פרמטרים‬ ‫שינויי‬ ‫ע"י‬ ‫התאריך‬ ‫הדבקת‬ ‫מיקום‬
BONUS
BONUS
29
BONUS:BONUS: date_stamperdate_stamper
 Inputs:Inputs: R_aline, G_aline, B_alineR_aline, G_aline, B_aline –– original alined RGB.original alined RGB.
datedate –– the date to be stamped.the date to be stamped.
date_en - enable/disable stamping feature.date_en - enable/disable stamping feature.
 Outputs:Outputs: R_out, G_out, B_outR_out, G_out, B_out –– ““stampedstamped”” RGB.RGB. 30
BONUS:BONUS: date_stamper contdate_stamper cont..
muxdate_reg
8
MUL
DIG_HEIGHT
LOGIC
LOGIC
LOGIC
LOGIC
start
spen_in
hd
clk
LOGIC
LOGIC
X_cnt
Y_cnt
X_START_FROM
Y_START_FROM
row_num
col_num
work_flag
DIG_WIDTH
LOGIC
LOGIC
CUBE_HEIGHT
LOGIC
LOGICCUBE_WIDTH dig_col
dig_row
dig_start_add
+
fonts ROM
“ascii” ordered
add
mux
5
1
mux
}R,G,B}outoriginal {R,G,B{
stamp_pixel
{255,0,0}
3
3
work_flag
work_flag
work_flag
31
BONUS:BONUS: date_stamper contdate_stamper cont..
.‫בקלות‬ ‫לשינוי‬ ‫וניתנים‬ ‫כפרמטרים‬ ‫מוגדרים‬ ‫והמיקומים‬ ‫המימדים‬
1234
1
2
3
4
X_cnt = X_START_FROM
Y_cnt = Y_START_FROM
col_num = 0
row_num = 0
image: digit dimensions:
CUBE_HEIGHT
pixel
CUBE_WIDTH
DIG_WIDTH
DIG_HEIGHT
cube dimensions:
32
BONUS:BONUS: date_stamper contdate_stamper cont..
:‫נוספים‬ ‫מימדים‬ ‫כמה‬:‫נוספים‬ ‫מימדים‬ ‫כמה‬
CUBE_HEIGHT
CUBE_WIDTH
CUBE_HEIGHT
CUBE_WIDTH
CUBE_HEIGHT
CUBE_WIDTH
33
BONUS:BONUS: date_stamper contdate_stamper cont..
– ‫בו‬ ‫באזור‬ ‫רק‬ ‫פעיל‬ ‫המודול‬work_flag = 1.
.‫ישירות‬ ‫מועברים‬ ‫הפיקסלים‬ ,‫זה‬ ‫לאזור‬ ‫מחוץ‬
– ‫התמונה‬ ‫שאר‬work_flag = 0
– ‫התאריך‬ ‫הדבקת‬ ‫אזור‬work_flag = 1
34
BONUS:BONUS: date_stamper contdate_stamper cont..
-‫ב‬ ‫שמורים‬ ‫התוים‬ROM‫ומסודרים‬
‫סדר‬ ‫ע"פ‬ ‫בכתובות‬ASCII‫בכפולות‬
-‫ב‬ ‫התו‬ ‫גודל‬ ‫של‬)cubes(‫הגדרנו‬ ‫כאשר‬
‫הינו‬ ‫אצלנו‬ ‫התו‬ ‫שגודל‬5.
ASCII table font ROM
0 0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
00
0 0
0 0
0 0
11 1
1
1
1
1
1 1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1 1
1 1
1 1
1 1
1 1 1
1
1
1
address
48x 5
49x 5
50x 5
51x 5
0
1
2
3
‫נעשתה‬ ‫הפונטים‬ ‫של‬ ‫וההזנה‬ ‫ההגדרה‬
...‫יצירתיות‬ ‫מעט‬ ‫ודרשה‬ ‫ידני‬ ‫באופן‬
35
BONUS:BONUS: date_stamper contdate_stamper cont..
-‫ב‬ ‫הפונטים‬ ‫סידור‬ROM‫אחר‬ ‫כיתוב‬ ‫כל‬ ‫הדבקת‬ ,‫התאריך‬ ‫להדבקת‬ ‫פרט‬ ,‫מאפשר‬ ‫לעיל‬ ‫שהוסבר‬ ‫כפי‬
:‫מחרוזת‬ ‫של‬ ‫פשוטה‬ ‫בצורה‬ ‫הכיתוב‬ ‫הזנת‬ ‫ע"י‬ ,‫וגינרי‬ ‫נוח‬ ‫באופן‬ ‫בו‬ ‫שחפצים‬
‫חיצוני‬ ‫דמה‬ ‫מודול‬ ‫ע"י‬ ‫מועבר‬ ‫התאריך‬)behavioral Verilog(.‫מערך‬ ‫בתוך‬ ‫ונשמר‬
.‫ההדבקה‬ ‫אפשורביטול‬ ‫גם‬ ‫מדמה‬ ‫זה‬ ‫מודול‬
player
wire [NUM_OF_DIG*8-1:0] DATE;
reg date_en;
date_stamper
reg [7:0] date_reg[7:0[;
wire en
36
BONUS:BONUS: date_stamper contdate_stamper cont..
DebuggingDebugging
– ‫לשם‬ ‫ולכן‬ ,‫עצמאי‬ ‫באופן‬ ‫פותח‬ ‫המודל‬– ‫לשם‬ ‫ולכן‬ ,‫עצמאי‬ ‫באופן‬ ‫פותח‬ ‫המודל‬debuggingdebugging.‫תמונה‬ ‫המדמה‬ ‫מימדי‬ ‫דו‬ ‫מערך‬ ‫הגדרנו‬.‫תמונה‬ ‫המדמה‬ ‫מימדי‬ ‫דו‬ ‫מערך‬ ‫הגדרנו‬
''00.‫הנוכחי‬ ‫בפיקסל‬ ‫הדבקה‬ ‫התבצעה‬ ‫שלא‬ ‫מסמל‬ '.‫הנוכחי‬ ‫בפיקסל‬ ‫הדבקה‬ ‫התבצעה‬ ‫שלא‬ ‫מסמל‬ '
''11.‫הדבקה‬ ‫שבוצעה‬ ‫מסמל‬ '.‫הדבקה‬ ‫שבוצעה‬ ‫מסמל‬ '
:‫לעיל‬ ‫הדוגמא‬ ‫עבור‬:‫לעיל‬ ‫הדוגמא‬ ‫עבור‬
:‫נוספות‬ ‫דוגמאות‬:‫נוספות‬ ‫דוגמאות‬37
BONUS:BONUS: date_stamper contdate_stamper cont..
38
BONUS:BONUS: date_stamper contdate_stamper cont..
:‫האמיתית‬ ‫ובתמונה‬:‫האמיתית‬ ‫ובתמונה‬
39
Accessories modulesAccessories modules
Int to floatInt to float
JustifyJustify
multipliermultiplier
40
Int_to_fpInt_to_fp
:‫תיאור‬
‫מייצוג‬ ‫מספר‬ ‫ממיר‬ ‫המודל‬int‫לייצוג‬fp:‫ההגדרה‬ ‫לפי‬fp={ma_ea}: ma
[15:0], ea [7:0[‫המודל‬ ‫של‬ ‫ובשימוש‬justify.‫בכיתה‬ ‫שניתן‬
Input:
‫בייצוג‬ ‫המספר‬int
Output:
‫בייצוג‬ ‫המספר‬fp [23:0[‫של‬ ‫מצב‬ ‫על‬ ‫המצביע‬ ‫ביט‬ ,over_flow‫נוסף‬ ‫וביט‬ ,
‫של‬ ‫מצב‬ ‫על‬ ‫שמצביע‬under_flow
:‫הערות‬
‫במודל‬ ‫שימוש‬ ‫עושה‬ ‫המודל‬justify.
.‫בכלל‬ ‫שעון‬ ‫ללא‬ ‫עובד‬ ‫המודל‬
‫שהוא‬ ‫כמו‬ ‫ההתחלתי‬ ‫בשלב‬ ‫מוצב‬ ‫המספר‬
‫קבוע‬ ‫ערך‬ ‫מקבל‬ '‫והאקס‬ ,‫במטיסה‬00001111
41
JustifyJustify
:‫תיאור‬
‫הלוגיקה‬ ‫לפי‬ ‫אותם‬ ‫ומיישר‬ '‫ואקס‬ ‫מנטיסה‬ ‫מקבל‬ ‫המודל‬
.‫המצורף‬ ‫בתרשים‬
Input: ea [7:0]
,ma [15:0] , last_is_1
Output:
‫בייצוג‬ ‫המספר‬fp
:‫הערות‬
.‫בכלל‬ ‫שעון‬ ‫ללא‬ ‫עובד‬ ‫המודל‬
‫הסיבית‬ ‫את‬ ‫לו‬ ‫והוספנו‬ ‫המקורי‬ ‫המודל‬ ‫את‬ ‫שינינו‬last_is_1
-‫ל‬ ‫שווה‬ ‫המקורית‬ '‫המנ‬ ‫של‬ ‫האחרונה‬ ‫הסיבית‬ ‫אם‬ ‫שמתריעה‬1
(‫תרשים‬ ‫)ראה‬ ‫אותה‬ ‫נחתוך‬ ‫שלא‬ ‫מנת‬ ‫על‬
(ma[i]^ma[i-1])
‫זה‬ ‫אז‬
0‫או‬1 -
‫?אין‬
i=16
‫?יש‬
ma[0] = 1
ma[16:1] + 16'h1ma[16:1]
{ea[7],ea} + 9'd1
last_is_1
{ma,1'b1} << (15-found-1)ma << (15-found)
{ea[7],ea} - 9'd15 + found
‫?לא‬ ‫?כן‬
‫?כן‬
‫?כן‬
‫?לא‬
‫?לא‬
ma [16:0]
ea_justified [7:0]
over_flow
under_flow
ea [7:0]
ma_justified [16:0]
last_is_1
'‫במנט‬ ‫הראשון‬ ‫המקום‬ ‫את‬ ‫נחפש‬
‫בריצה‬ ‫שונות‬ ‫סיביות‬ ‫שתי‬ ‫יש‬ ‫שבו‬
‫ה‬ ‫מהסיבית‬16‫ומטה‬
‫המקורית‬ '‫במנט‬,
‫ה‬bit‫האחרון‬
=1?
42
MultiplyMultiply
:‫תיאור‬
‫של‬ ‫הכפלה‬ ‫מבצע‬ ‫המודל‬2‫בייצוג‬ ‫מספרים‬fp'‫אקס‬ ‫סכימת‬ ,‫מנטיסות‬ ‫)הכפלת‬
‫ה‬ ‫בעזרת‬ ‫ותיקון‬justify.(
Input:
‫בייצוג‬ ‫מספרים‬ ‫שני‬fp[23:0[
Output:
‫בייצוג‬ ‫המכפלה‬fp [23:0[‫של‬ ‫מצב‬ ‫על‬ ‫המצביע‬ ‫ביט‬ ,over_flow‫נוסף‬ ‫וביט‬ ,
‫של‬ ‫מצב‬ ‫על‬ ‫שמצביע‬under_flow
:‫הערות‬
.‫בכלל‬ ‫שעון‬ ‫ללא‬ ‫עובד‬ ‫המודל‬
a_fp [23:0] o_fp [23:0]
over_flow
under_flow
b_fp [23:0]
‫נכנסים‬2‫מספרים‬fp
'‫ואקס‬ ‫למנטיסה‬ ‫המספרים‬ ‫את‬ ‫נפצל‬
:‫ריפוד‬ ‫נבצע‬
- ‫האחרון‬ ‫האיבר‬ ‫בעזרת‬ ‫נרפד‬ ‫המטיסה‬ ‫את‬16‫פעמים‬
‫אחת‬ ‫פעם‬ – ‫האחרון‬ ‫האיבר‬ ‫בעזרת‬ ‫נרפד‬ '‫האקס‬ ‫את‬
‫המנטיסות‬ ‫את‬ ‫נכפיל‬
'‫האקס‬ ‫את‬ ‫נסכום‬
‫ב‬ ‫התוצאה‬ ‫את‬ ‫נעביר‬justify‫תוצאה‬ ‫אתה‬ ‫ונקבל‬
:‫דוגמא‬:‫דוגמא‬
43
‫בלוקים‬ ‫ויצירת‬ ‫המידע‬ ‫–קליטת‬ ‫ראשון‬ ‫חלק‬
44
RGBtoYCbCrRGBtoYCbCr--‫מ‬ ‫-ממיר‬‫מ‬ ‫-ממיר‬RGBRGB‫-ל‬‫-ל‬YCbCrYCbCr‫הכפלת‬ ‫ע"י‬‫הכפלת‬ ‫ע"י‬
‫.מטריצות‬‫.מטריצות‬
WrPixelsClientWrPixelsClient--‫ה‬ ‫אל‬ ‫בלוקים‬ ‫של‬ "‫"רצועות‬ ‫-כותב‬‫ה‬ ‫אל‬ ‫בלוקים‬ ‫של‬ "‫"רצועות‬ ‫-כותב‬RAMRAM
‫שורה‬ ‫אחר‬ ‫.שורה‬‫שורה‬ ‫אחר‬ ‫.שורה‬
arb_strictarb_strict--‫למודול‬ ‫מלאה‬ ‫עדיפות‬ ‫נותן‬‫למודול‬ ‫מלאה‬ ‫עדיפות‬ ‫נותן‬
WrPixelsClientWrPixelsClient..
ram_blocksram_blocks--‫הפיקסלים‬ ‫של‬ ‫הבלוקים‬ ‫את‬ ‫מאחסן‬‫הפיקסלים‬ ‫של‬ ‫הבלוקים‬ ‫את‬ ‫מאחסן‬
‫ע"י‬ ‫הנכתבים‬‫ע"י‬ ‫הנכתבים‬WrPixelsClientWrPixelsClient..
DCTclientDCTclient--‫מה‬ ‫הפיקסלים‬ ‫את‬ ‫-קורא‬‫מה‬ ‫הפיקסלים‬ ‫את‬ ‫-קורא‬RAMRAM‫בסדר‬‫בסדר‬
‫הרצוי‬‫הרצוי‬‫ושולח‬‫ושולח‬Y,Cb,CrY,Cb,Cr‫בלוק‬ ‫אחר‬ ‫בלוק‬‫בלוק‬ ‫אחר‬ ‫בלוק‬
‫ה‬ ‫אל‬ ‫-הלאה‬‫ה‬ ‫אל‬ ‫-הלאה‬DCTDCT..
date_stamperdate_stamper--‫בונוס‬‫בונוס‬‫לתמונה‬ ‫תאריך‬ ‫מדביק‬ ..‫לתמונה‬ ‫תאריך‬ ‫מדביק‬ ..
45
46
RGBtoYCbCrRGBtoYCbCr
 Inputs:Inputs: Red, Green, BlueRed, Green, Blue –– 24 bit fp.24 bit fp.
startstart –– start convert.start convert.
 Outputs:Outputs: Y, Cb, CrY, Cb, Cr –– 24 bit fp.24 bit fp.
47
RGBtoYCbCr contRGBtoYCbCr cont..
YY 0.299 0.587 0.1140.299 0.587 0.114 RR 128128
Cb =Cb = - 0.1687 - 0.3313 0.5 *- 0.1687 - 0.3313 0.5 * G -G - 00
CrCr 0.5 - 0.4187 - 0.08130.5 - 0.4187 - 0.0813 BB 00
logiclogic
mux
0.2990.299 0.5870.587 0.1140.114
--
0.16870.1687
--
0.33130.3313
0.50.5
0.50.5
--
0.41870.4187
--
0.08130.0813
mul add reg mux
R
G
B
j
j
i
i
Y
Cb
Cr
-128
48
RGBtoYCbCr contRGBtoYCbCr cont..
start
calculations
dout_valid, when Y,Cb and Cr
calculated and ready.
49
RGBtoYCbCr contRGBtoYCbCr cont..
‫פעולה‬ ‫ועקרון‬ ‫תכנון‬ ‫שיקולי‬‫פעולה‬ ‫ועקרון‬ ‫תכנון‬ ‫שיקולי‬
‫ב‬ ‫שימוש‬‫ב‬ ‫שימוש‬multipliermultiplier.‫יחיד‬.‫יחיד‬
‫של‬ ‫מימדי‬ ‫דו‬ ‫כמערך‬ ‫מוחזקת‬ ‫הקבועים‬ ‫מטריצת‬‫של‬ ‫מימדי‬ ‫דו‬ ‫כמערך‬ ‫מוחזקת‬ ‫הקבועים‬ ‫מטריצת‬wireswires-‫ל‬ ‫)מקוצרים‬ .-‫ל‬ ‫)מקוצרים‬ .00-‫ו‬-‫ו‬11.(‫בהתאמה‬.(‫בהתאמה‬
‫רגיסטרים‬ ‫שני‬‫רגיסטרים‬ ‫שני‬i,ji,j.‫המטריצה‬ ‫הכפלת‬ ‫על‬ ‫רצים‬.‫המטריצה‬ ‫הכפלת‬ ‫על‬ ‫רצים‬
‫ל‬ ‫בהתאם‬ ‫המידע‬ ‫את‬ ‫מנתבים‬ ‫ובמוצא‬ ‫בכניסה‬ ‫המוקסים‬‫ל‬ ‫בהתאם‬ ‫המידע‬ ‫את‬ ‫מנתבים‬ ‫ובמוצא‬ ‫בכניסה‬ ‫המוקסים‬i,ji,j..
‫השורה‬ ‫ובסוף‬ ‫העמודה‬ ‫בוקטור‬ ‫השורה‬ ‫כפל‬ ‫של‬ ‫הנצבר‬ ‫הערך‬ ‫את‬ ‫שומר‬ ‫זמני‬ ‫רגיסטר‬‫השורה‬ ‫ובסוף‬ ‫העמודה‬ ‫בוקטור‬ ‫השורה‬ ‫כפל‬ ‫של‬ ‫הנצבר‬ ‫הערך‬ ‫את‬ ‫שומר‬ ‫זמני‬ ‫רגיסטר‬
.‫המתאים‬ ‫למוצא‬ ‫מועבר‬.‫המתאים‬ ‫למוצא‬ ‫מועבר‬
‫שנבחנו‬ ‫אלטרנטיבות‬‫שנבחנו‬ ‫אלטרנטיבות‬
-‫ב‬ ‫המטריצה‬ ‫ערכי‬ ‫שמירת‬-‫ב‬ ‫המטריצה‬ ‫ערכי‬ ‫שמירת‬ROMROM.‫למודול‬ ‫מחוץ‬.‫למודול‬ ‫מחוץ‬
‫הוספת‬ ‫מצדיקה‬ ‫שלא‬ ‫קטנה‬ ‫מספרים‬ ‫כמות‬ :‫חסרונות‬‫הוספת‬ ‫מצדיקה‬ ‫שלא‬ ‫קטנה‬ ‫מספרים‬ ‫כמות‬ :‫חסרונות‬ROMROM..
‫הקל‬ ‫וזה‬ ,‫במטריצה‬ ‫מדובר‬ ‫כי‬ ‫יותר‬ ‫טבעית‬ ‫הייתה‬ ‫פנימי‬ ‫מימדי‬ ‫דו‬ ‫מערך‬ ‫בתוך‬ ‫הערכים‬ ‫שמירת‬‫הקל‬ ‫וזה‬ ,‫במטריצה‬ ‫מדובר‬ ‫כי‬ ‫יותר‬ ‫טבעית‬ ‫הייתה‬ ‫פנימי‬ ‫מימדי‬ ‫דו‬ ‫מערך‬ ‫בתוך‬ ‫הערכים‬ ‫שמירת‬
.‫הכפל‬ ‫פעולת‬ ‫ביצוע‬ ‫על‬.‫הכפל‬ ‫פעולת‬ ‫ביצוע‬ ‫על‬
50
WrPixelsClientWrPixelsClient
 Inputs:Inputs: Y, Cb, CrY, Cb, Cr –– 24 bit fp.24 bit fp.
ackack –– acknowledge from arb_strict.acknowledge from arb_strict.
 Outputs:Outputs: datadata –– 72 bit of {Y,Cb,Cr} together.72 bit of {Y,Cb,Cr} together.
strip_readystrip_ready –– finished writing a full strip into RAM.finished writing a full strip into RAM.
start_addstart_add –– starting address of the strip in RAM.starting address of the strip in RAM.
reqreq –– request from arb_strict.request from arb_strict. 51
WrPixelsClient contWrPixelsClient cont..
Y
Cb
Cr
ack
to arb/ram_blocks
{Y,Cb,Cr} 72 bit
spen_in
din_valid
req
add cnt cmp
mux
to DCTclient
blocks_num
1
strip_ready (1 bit pulse),
start_add (14 bit)
Strip ready
0
52
WrPixelsClient cont.WrPixelsClient cont.
valid from RGBtoYCbCr
pixels
strip ready to DCTclient,
when a full strip written
to ram_blocks
start_add to DCTclient,
when a full strip written
to ram_blocks{Y,Cb,Cr} data to ram_Blocks
always receives ack for req
53
WrPixelsClient contWrPixelsClient cont
‫פעולה‬ ‫ועקרון‬ ‫תכנון‬ ‫שיקולי‬‫פעולה‬ ‫ועקרון‬ ‫תכנון‬ ‫שיקולי‬
-‫ה‬ ‫אל‬ ‫הכתיבה‬-‫ה‬ ‫אל‬ ‫הכתיבה‬ram_blocksram_blocks‫שיש‬ ‫פעם‬ ‫בכל‬ ‫מתבצעת‬‫שיש‬ ‫פעם‬ ‫בכל‬ ‫מתבצעת‬validvalid-‫מ‬-‫מ‬RGBtoYCbCrRGBtoYCbCr..
– ‫ב‬ ‫עולה‬ ‫לכתיבה‬ ‫הכתובת‬– ‫ב‬ ‫עולה‬ ‫לכתיבה‬ ‫הכתובת‬11."‫שורה‬ ‫אחר‬ ‫"שורה‬ ‫מתבצעת‬ ‫הכתיבה‬ ‫וכך‬ ,."‫שורה‬ ‫אחר‬ ‫"שורה‬ ‫מתבצעת‬ ‫הכתיבה‬ ‫וכך‬ ,
."‫שלמה‬ ‫"רצועה‬ ‫התמלאה‬ ‫מתי‬ ‫לדעת‬ ‫ניתן‬ ‫וכך‬ ‫התמונה‬ ‫אורך‬ ‫את‬ ‫בכניסה‬ ‫מקבל‬ ‫המודול‬."‫שלמה‬ ‫"רצועה‬ ‫התמלאה‬ ‫מתי‬ ‫לדעת‬ ‫ניתן‬ ‫וכך‬ ‫התמונה‬ ‫אורך‬ ‫את‬ ‫בכניסה‬ ‫מקבל‬ ‫המודול‬
‫הפולס‬ ‫נשלח‬ ‫שהתמלאה‬ "‫"רצועה‬ ‫כל‬ ‫עבור‬‫הפולס‬ ‫נשלח‬ ‫שהתמלאה‬ "‫"רצועה‬ ‫כל‬ ‫עבור‬""strip readystrip ready””‫התחילה‬ ‫ממנה‬ ‫והכתובת‬‫התחילה‬ ‫ממנה‬ ‫והכתובת‬
-‫ה‬ ‫אל‬ ,‫להתמלא‬ "‫ה"רצועה‬-‫ה‬ ‫אל‬ ,‫להתמלא‬ "‫ה"רצועה‬DCTclientDCTclient.‫לקרוא‬ ‫להתחיל‬ ‫ומהיכן‬ ‫מתי‬ ‫שידע‬ ‫מנת‬ ‫על‬.‫לקרוא‬ ‫להתחיל‬ ‫ומהיכן‬ ‫מתי‬ ‫שידע‬ ‫מנת‬ ‫על‬
-‫מה‬ ‫עדיפות‬ ‫יקבל‬ ‫תמיד‬ ‫המודול‬-‫מה‬ ‫עדיפות‬ ‫יקבל‬ ‫תמיד‬ ‫המודול‬arb_strictarb_strict.‫תקינה‬ ‫מידע‬ ‫זרימת‬ ‫על‬ ‫לשמור‬ ‫מנת‬ ‫על‬.‫תקינה‬ ‫מידע‬ ‫זרימת‬ ‫על‬ ‫לשמור‬ ‫מנת‬ ‫על‬
‫שנבחנו‬ ‫אלטרנטיבות‬‫שנבחנו‬ ‫אלטרנטיבות‬
‫ספירת‬‫ספירת‬88hdhd."‫"רצועה‬ ‫מילוי‬ ‫לזהות‬ ‫מנת‬ ‫על‬ ,‫התמונה‬ ‫רוחב‬ ‫את‬ ‫לקבל‬ ‫,במקום‬."‫"רצועה‬ ‫מילוי‬ ‫לזהות‬ ‫מנת‬ ‫על‬ ,‫התמונה‬ ‫רוחב‬ ‫את‬ ‫לקבל‬ ‫,במקום‬
:‫החיסרונות‬:‫החיסרונות‬
-‫ה‬ ‫עקב‬ ‫סינכרון‬ ‫חוסר‬-‫ה‬ ‫עקב‬ ‫סינכרון‬ ‫חוסר‬pipelinepipeline-‫ה‬ ‫בין‬ ‫שנוצר‬-‫ה‬ ‫בין‬ ‫שנוצר‬imagerimager.‫המודול‬ ‫לבין‬.‫המודול‬ ‫לבין‬
-‫ה‬-‫ה‬hdhd.‫הלוגיקה‬ ‫את‬ ‫מסרבל‬ ‫וזה‬ ‫שורה‬ ‫בסוף‬ ‫ולא‬ ‫שורה‬ ‫בתחילת‬ ‫עולה‬.‫הלוגיקה‬ ‫את‬ ‫מסרבל‬ ‫וזה‬ ‫שורה‬ ‫בסוף‬ ‫ולא‬ ‫שורה‬ ‫בתחילת‬ ‫עולה‬
-‫ה‬ ‫בתוך‬ "‫בלוק‬ ‫אחר‬ ‫"בלוק‬ ‫של‬ ‫בסדר‬ ‫הפיקסלים‬ ‫שמירת‬-‫ה‬ ‫בתוך‬ "‫בלוק‬ ‫אחר‬ ‫"בלוק‬ ‫של‬ ‫בסדר‬ ‫הפיקסלים‬ ‫שמירת‬RAMRAM."‫שורה‬ ‫אחר‬ ‫"שורה‬ ‫ולא‬."‫שורה‬ ‫אחר‬ ‫"שורה‬ ‫ולא‬
‫שהמודול‬ ‫החלטנו‬ ‫דבר‬ ‫של‬ ‫ובסופו‬ ,‫עקרוני‬ ‫עניין‬ ‫אינו‬ ‫זהו‬ ‫למעשה‬‫שהמודול‬ ‫החלטנו‬ ‫דבר‬ ‫של‬ ‫ובסופו‬ ,‫עקרוני‬ ‫עניין‬ ‫אינו‬ ‫זהו‬ ‫למעשה‬DCTclientDCTclient‫שיקרא‬ ‫זה‬ ‫יהיה‬‫שיקרא‬ ‫זה‬ ‫יהיה‬
."‫בלוק‬ ‫אחר‬ ‫"בלוק‬."‫בלוק‬ ‫אחר‬ ‫"בלוק‬
54
arb_strictarb_strict
 Inputs:Inputs: wr_data_1, wr_data_2wr_data_1, wr_data_2 –– 72 bit of {Y,Cb,Cr}.72 bit of {Y,Cb,Cr}.
add_1, add_2add_1, add_2 –– wanted address of RAM.wanted address of RAM.
req_1, req_2req_1, req_2 –– clients requests.clients requests.
rnw_1, rnw_2rnw_1, rnw_2 –– ““read not writeread not write”” requests of the clients.requests of the clients.
 Outputs:Outputs: ack_1, ack_2ack_1, ack_2 –– acknowledges to clients. 1 has higher priority.acknowledges to clients. 1 has higher priority.
add, wr_data, rnwadd, wr_data, rnw –– preferred clientpreferred client’’s signals directed to RAM.s signals directed to RAM.55
arb_strict contarb_strict cont..
logiclogic
mux
req1 (gets full priority)
req2
ack1
ack2
Address, Data
to ram_blocks
Address1, Data1
Address2
Client1 = WrPixelsClient
Client2 = DCTclient
56
arb_strict contarb_strict cont..
client_2 requests constantly,
But he gets ack only if client_1
doesn’t send a request.
whenever client_1 sends a request,
he’s acknowledged immediately.
the acknowledged
client’s wires connected
to ram_blocks.
client1 = WrPixelsClient
client2 = DCTclient 57
arb_strict contarb_strict cont..
‫פעולה‬ ‫ועקרון‬ ‫תכנון‬ ‫שיקולי‬‫פעולה‬ ‫ועקרון‬ ‫תכנון‬ ‫שיקולי‬
-‫ה‬ ‫אל‬ ‫דרכו‬ ‫המחוברים‬ ‫המודולים‬ ‫בין‬ ‫עדיפות‬ ‫יחס‬ ‫מגדיר‬-‫ה‬ ‫אל‬ ‫דרכו‬ ‫המחוברים‬ ‫המודולים‬ ‫בין‬ ‫עדיפות‬ ‫יחס‬ ‫מגדיר‬ram_blocksram_blocks..
-‫ל‬ ‫פניה‬ ‫מבקש‬ ‫ביותר‬ ‫המועדף‬ ‫שהמודול‬ ‫פעם‬ ‫בכל‬-‫ל‬ ‫פניה‬ ‫מבקש‬ ‫ביותר‬ ‫המועדף‬ ‫שהמודול‬ ‫פעם‬ ‫בכל‬ram_blocksram_blocks ((reqreq‫אישור‬ ‫מקבל‬ ‫הוא‬ (‫אישור‬ ‫מקבל‬ ‫הוא‬ (
‫מיידי‬‫מיידי‬))ackack((-‫ה‬ ‫אל‬ ‫פונה‬ ‫אחר‬ ‫מודול‬ ‫זמן‬ ‫באותו‬ ‫אם‬ ‫תלות‬ ‫ללא‬ ,-‫ה‬ ‫אל‬ ‫פונה‬ ‫אחר‬ ‫מודול‬ ‫זמן‬ ‫באותו‬ ‫אם‬ ‫תלות‬ ‫ללא‬ ,ram_blocksram_blocks..
-‫ה‬ ‫עם‬ ‫מתקשר‬ ‫המועדף‬ ‫המודול‬ ‫אם‬ ,‫כן‬ ‫כמו‬-‫ה‬ ‫עם‬ ‫מתקשר‬ ‫המועדף‬ ‫המודול‬ ‫אם‬ ,‫כן‬ ‫כמו‬ram_blocksram_blocks‫אישור‬ ‫יקבל‬ ‫לא‬ ‫אחר‬ ‫מודול‬ ‫שום‬‫אישור‬ ‫יקבל‬ ‫לא‬ ‫אחר‬ ‫מודול‬ ‫שום‬
.‫ההתקשרות‬ ‫את‬ ‫יסיים‬ ‫המועדף‬ ‫שהמודול‬ ‫עד‬ ‫פנייה‬ ‫יבקש‬ ‫אם‬.‫ההתקשרות‬ ‫את‬ ‫יסיים‬ ‫המועדף‬ ‫שהמודול‬ ‫עד‬ ‫פנייה‬ ‫יבקש‬ ‫אם‬))strict lockstrict lock((..
‫בין‬ ‫נקבע‬ ‫העדיפות‬ ‫יחס‬ ‫אצלנו‬‫בין‬ ‫נקבע‬ ‫העדיפות‬ ‫יחס‬ ‫אצלנו‬22– ‫בלבד‬ ‫מודולים‬– ‫בלבד‬ ‫מודולים‬11--WrPixelsClient, 2-DCTclientWrPixelsClient, 2-DCTclient..
‫שנבחנו‬ ‫אלטרנטיבות‬‫שנבחנו‬ ‫אלטרנטיבות‬
‫למימוש‬ ‫קונפיגורציות‬ ‫כמה‬ ‫יש‬ ‫למעשה‬‫למימוש‬ ‫קונפיגורציות‬ ‫כמה‬ ‫יש‬ ‫למעשה‬arbarb‫שקונפיגורציית‬ ‫כמובן‬ ‫אך‬ ,‫בקורס‬ ‫שנלמדו‬ ‫כפי‬‫שקונפיגורציית‬ ‫כמובן‬ ‫אך‬ ,‫בקורס‬ ‫שנלמדו‬ ‫כפי‬
-‫ה‬-‫ה‬strict lockstrict lock-‫מ‬ ‫למנוע‬ ‫שאין‬ ‫כיוון‬ ‫עבורינו‬ ‫ביותר‬ ‫המתאימה‬ ‫היא‬-‫מ‬ ‫למנוע‬ ‫שאין‬ ‫כיוון‬ ‫עבורינו‬ ‫ביותר‬ ‫המתאימה‬ ‫היא‬WrPixelsClientWrPixelsClient‫את‬‫את‬
-‫ה‬ ‫עם‬ ‫ההתקשרות‬-‫ה‬ ‫עם‬ ‫ההתקשרות‬ram_blocksram_blocks.(‫לעיל‬ ‫)ראה‬ ‫מקרה‬ ‫בשום‬.(‫לעיל‬ ‫)ראה‬ ‫מקרה‬ ‫בשום‬
58
ram_blocksram_blocks
 Inputs:Inputs: addadd –– 14 bit address.14 bit address.
wr_datawr_data –– 72 bit of {Y,Cb,Cr}to store.72 bit of {Y,Cb,Cr}to store.
 Outputs:Outputs: rd_datard_data –– 72 bit of {Y,Cb,Cr}to read.72 bit of {Y,Cb,Cr}to read.
59
ram_blocks contram_blocks cont..
“block1” “block2”
ram_blocks
R 24bit G 24bit B 24bit
R 24bit B 24bit
R 24bit B 24bit
R 24bit B 24bit
R 24bit B 24bit
R 24bit B 24bit
R 24bit B 24bit
R 24bit B 24bit
R 24bit B 24bit
R 24bit B 24bit
R 24bit B 24bit
R 24bit B 24bit
R 24bit B 24bit
R 24bit B 24bit
R 24bit B 24bit
R 24bit B 24bit
R 24bit B 24bit
R 24bit B 24bit
R 24bit B 24bit
R 24bit B 24bit
R 24bit B 24bit
R 24bit B 24bit
R 24bit B 24bit
R 24bit B 24bit
line1 of block1
line1 of block2
line2 of block1
G 24bit
G 24bit
G 24bit
G 24bit
G 24bit
G 24bit
G 24bit
G 24bit
G 24bit
G 24bit
G 24bit
G 24bit
G 24bit
G 24bit
G 24bit
G 24bit
G 24bit
G 24bit
G 24bit
G 24bit
G 24bit
G 24bit
G 24bit
IMAGE
"‫"רגיל‬ ‫בסדר‬ ‫מילוי‬
"‫שורה‬ ‫אחר‬ ‫"שורה‬
60
ram_blocks contram_blocks cont..
the pixels being filled:
srrip_ready, DCTclient
can start reading the data.
rnw swiches to read because
DCTclient began reading.
DCTclient begin
reading the data.
WrPixelsClient continues
write occasionaly, and the
data not being read during
this cycle.
61
ram_blocks contram_blocks cont..
‫פעולה‬ ‫ועקרון‬ ‫תכנון‬ ‫שיקולי‬‫פעולה‬ ‫ועקרון‬ ‫תכנון‬ ‫שיקולי‬
‫לצורך‬ "‫בלוק‬ ‫אחר‬ ‫"בלוק‬ ‫של‬ ‫בסדר‬ ‫ממנו‬ ‫שישלפו‬ ‫מנת‬ ‫על‬ ‫הפיקסלים‬ ‫את‬ ‫זמנית‬ ‫מאחסן‬‫לצורך‬ "‫בלוק‬ ‫אחר‬ ‫"בלוק‬ ‫של‬ ‫בסדר‬ ‫ממנו‬ ‫שישלפו‬ ‫מנת‬ ‫על‬ ‫הפיקסלים‬ ‫את‬ ‫זמנית‬ ‫מאחסן‬
-‫ה‬ ‫ביצוע‬-‫ה‬ ‫ביצוע‬DCTDCT..
‫הינו‬ ‫תא‬ ‫כל‬ ‫רוחב‬‫הינו‬ ‫תא‬ ‫כל‬ ‫רוחב‬2424‫כפול‬ ‫ביט‬‫כפול‬ ‫ביט‬33‫ובסה"כ‬ ,‫פיקסלים‬‫ובסה"כ‬ ,‫פיקסלים‬7272.‫ביט‬.‫ביט‬
‫עד‬ ‫זמנית‬ ‫בו‬ ‫לאחסן‬ ‫יוכל‬ ‫שהזיכרון‬ ‫כך‬ ‫תוכנן‬ ‫הכתובות‬ ‫מרחב‬‫עד‬ ‫זמנית‬ ‫בו‬ ‫לאחסן‬ ‫יוכל‬ ‫שהזיכרון‬ ‫כך‬ ‫תוכנן‬ ‫הכתובות‬ ‫מרחב‬22.‫מלאות‬ "‫"רצועות‬.‫מלאות‬ "‫"רצועות‬
‫הינו‬ ‫המירבי‬ ‫התמונה‬ ‫שרוחב‬ ‫ובהנחה‬‫הינו‬ ‫המירבי‬ ‫התמונה‬ ‫שרוחב‬ ‫ובהנחה‬10241024:‫הינו‬ ‫החישוב‬ ,‫פיקסלים‬:‫הינו‬ ‫החישוב‬ ,‫פיקסלים‬
1024 * 8 * 2 = 16K1024 * 8 * 2 = 16K =>=> 14 bit14 bit
‫שנבחנו‬ ‫אלטרנטיבות‬‫שנבחנו‬ ‫אלטרנטיבות‬
.‫יותר‬ ‫בזבזני‬ ‫אך‬ ‫פשוט‬ ‫יותר‬ ‫זה‬ ,‫רצועה‬ ‫לכל‬ ‫אחד‬ ,‫זיכרון‬ ‫אזורי‬ ‫שני‬ ‫בין‬ ‫מיתוג‬.‫יותר‬ ‫בזבזני‬ ‫אך‬ ‫פשוט‬ ‫יותר‬ ‫זה‬ ,‫רצועה‬ ‫לכל‬ ‫אחד‬ ,‫זיכרון‬ ‫אזורי‬ ‫שני‬ ‫בין‬ ‫מיתוג‬
‫פיקסלים‬
‫בשורה‬
‫שורות‬
‫ברצועה‬
‫רצועות‬
62
DCTclientDCTclient
 Inputs:Inputs: startstart –– strip ready in RAM.strip ready in RAM.
start_addstart_add –– starting address of the strip in RAM.starting address of the strip in RAM.
rd_datard_data –– 72 bit of {Y,Cb,Cr} from RAM.72 bit of {Y,Cb,Cr} from RAM.
ackack –– acknowledge from arb_strict.acknowledge from arb_strict.
 Outputs:Outputs: Ydata, Cbdata, CrdataYdata, Cbdata, Crdata –– 24 bit fp.24 bit fp.
reqreq –– request from arb_strict.request from arb_strict. 63
DCTclient contDCTclient cont..
ram_blocks
line1 of block1
line1 of block2
line2 of block1
Y
Cb
Cr
mux
{Y,Cb,Cr} 72 bit
ack
computed
address
computed
address
to ram_blocks
(through arb_strict)
R 24bit G 24bit B 24bit
R 24bit G 24bit B 24bit
R 24bit G 24bit B 24bit
R 24bit G 24bit B 24bit
R 24bit G 24bit B 24bit
R 24bit G 24bit B 24bit
R 24bit G 24bit B 24bit
R 24bit G 24bit B 24bit
R 24bit G 24bit B 24bit
R 24bit G 24bit B 24bit
R 24bit G 24bit B 24bit
R 24bit G 24bit B 24bit
R 24bit G 24bit B 24bit
R 24bit G 24bit B 24bit
R 24bit G 24bit B 24bit
R 24bit G 24bit B 24bit
R 24bit G 24bit B 24bit
R 24bit G 24bit B 24bit
R 24bit G 24bit B 24bit
R 24bit G 24bit B 24bit
R 24bit G 24bit B 24bit
R 24bit G 24bit B 24bit
R 24bit G 24bit B 24bit
R 24bit G 24bit B 24bit
R 24bit G 24bit B 24bit
R 24bit G 24bit B 24bit
R 24bit G 24bit B 24bit
R 24bit G 24bit B 24bit
R 24bit G 24bit B 24bit
R 24bit G 24bit B 24bit
R 24bit G 24bit B 24bit
R 24bit G 24bit B 24bit
R 24bit G 24bit B 24bit
R 24bit G 24bit B 24bit
R 24bit G 24bit B 24bit
R 24bit G 24bit B 24bit
R 24bit G 24bit B 24bit
R 24bit G 24bit B 24bit
R 24bit G 24bit B 24bit
R 24bit G 24bit B 24bit
R 24bit G 24bit B 24bit
R 24bit G 24bit B 24bit
R 24bit G 24bit B 24bit
R 24bit G 24bit B 24bit
R 24bit G 24bit B 24bit
R 24bit G 24bit B 24bit
R 24bit G 24bit B 24bit
R 24bit G 24bit B 24bit
G 24bit
“block1”
Y
Cb
Cr
“block2” “block3”
"‫בלוק‬ ‫אחר‬ ‫"בלוק‬ ‫של‬ ‫בסדר‬ ‫ושליחה‬ ‫שליפה‬
64
DCTclient contDCTclient cont..
start received from
WrPixelsClient when
a strip is ready.
the read address is set
to the start_add received
from WrPixelsClient, and
advanced on.
req being set,
and ack received.
d_out_valid, with 8
clock spaces required
by the DCT modules.
65
DCTclient contDCTclient cont..
‫פעולה‬ ‫ועקרון‬ ‫תכנון‬ ‫שיקולי‬‫פעולה‬ ‫ועקרון‬ ‫תכנון‬ ‫שיקולי‬
-‫ה‬-‫ה‬DCTclientDCTclient-‫מה‬ ‫הפיקסלים‬ ‫את‬ ‫שולף‬-‫מה‬ ‫הפיקסלים‬ ‫את‬ ‫שולף‬ram_blocksram_blocks‫מעביר‬ ‫שהוא‬ ‫כך‬ ‫מוגדר‬ ‫סדר‬ ‫ע"פ‬‫מעביר‬ ‫שהוא‬ ‫כך‬ ‫מוגדר‬ ‫סדר‬ ‫ע"פ‬
-‫ה‬ ‫אל‬ ‫הלאה‬ ‫אותם‬-‫ה‬ ‫אל‬ ‫הלאה‬ ‫אותם‬DCTDCT."‫בלוק‬ ‫אחר‬ ‫"בלוק‬ ‫של‬ ‫בסדר‬."‫בלוק‬ ‫אחר‬ ‫"בלוק‬ ‫של‬ ‫בסדר‬
‫הפולס‬ ‫את‬ ‫מקבל‬‫הפולס‬ ‫את‬ ‫מקבל‬""strip readystrip ready””"‫ה"רצועה‬ ‫מאוחסנת‬ ‫שבה‬ ‫ההתחלתית‬ ‫הכתובת‬ ‫ואת‬"‫ה"רצועה‬ ‫מאוחסנת‬ ‫שבה‬ ‫ההתחלתית‬ ‫הכתובת‬ ‫ואת‬
‫הנוכחית‬‫הנוכחית‬))start_addstart_add((-‫מה‬ ‫הפיקסלים‬ ‫את‬ ‫לקרוא‬ ‫ומהיכן‬ ‫מתי‬ ‫יודע‬ ‫וכך‬ ,-‫מה‬ ‫הפיקסלים‬ ‫את‬ ‫לקרוא‬ ‫ומהיכן‬ ‫מתי‬ ‫יודע‬ ‫וכך‬ ,ram_blocksram_blocks..
‫פנימיים‬ ‫מונים‬ ‫שני‬ ‫מכיל‬ ‫המודול‬ :‫הכתובת‬ ‫חישוב‬‫פנימיים‬ ‫מונים‬ ‫שני‬ ‫מכיל‬ ‫המודול‬ :‫הכתובת‬ ‫חישוב‬i,ji,j‫והעמודה‬ ‫השורה‬ ‫מספר‬ ‫את‬ ‫המציינים‬‫והעמודה‬ ‫השורה‬ ‫מספר‬ ‫את‬ ‫המציינים‬
‫ומונה‬ ,‫הנוכחי‬ ‫הבלוק‬ ‫בתוך‬ ‫הנוכחי‬ ‫הפיקסל‬ ‫של‬‫ומונה‬ ,‫הנוכחי‬ ‫הבלוק‬ ‫בתוך‬ ‫הנוכחי‬ ‫הפיקסל‬ ‫של‬block_cntblock_cnt‫בתוך‬ ‫הנוכחי‬ ‫הבלוק‬ ‫את‬ ‫המציין‬‫בתוך‬ ‫הנוכחי‬ ‫הבלוק‬ ‫את‬ ‫המציין‬
‫הבלוקים‬ ‫מספר‬ ‫את‬ ‫בכניסה‬ ‫מקבל‬ ‫כן‬ ‫כמו‬ ."‫ה"רצועה‬‫הבלוקים‬ ‫מספר‬ ‫את‬ ‫בכניסה‬ ‫מקבל‬ ‫כן‬ ‫כמו‬ ."‫ה"רצועה‬))blocks_numblocks_num((..
:‫הינו‬ ‫כך‬ ‫אם‬ ‫הפיקסל‬ ‫לשליפת‬ ‫הכתובת‬ ‫חישוב‬:‫הינו‬ ‫כך‬ ‫אם‬ ‫הפיקסל‬ ‫לשליפת‬ ‫הכתובת‬ ‫חישוב‬
add = start_add + (i*blocks_num*8 + block_cnt*8 + jadd = start_add + (i*blocks_num*8 + block_cnt*8 + j))
‫ממתין‬‫ממתין‬88-‫ו‬ ‫לפיקסל‬ ‫פיקסל‬ ‫בין‬ ‫מלאים‬ ‫שעונים‬-‫ו‬ ‫לפיקסל‬ ‫פיקסל‬ ‫בין‬ ‫מלאים‬ ‫שעונים‬450450-‫ה‬ ‫אל‬ ‫בשליחה‬ ‫לבלוק‬ ‫בלוק‬ ‫בין‬ ‫שעונים‬-‫ה‬ ‫אל‬ ‫בשליחה‬ ‫לבלוק‬ ‫בלוק‬ ‫בין‬ ‫שעונים‬
DCTDCT.‫פעולתו‬ ‫לביצוע‬ ‫הנדרש‬ ‫הזמן‬ ‫את‬ ‫לו‬ ‫לתת‬ ‫מנת‬ ‫על‬.‫פעולתו‬ ‫לביצוע‬ ‫הנדרש‬ ‫הזמן‬ ‫את‬ ‫לו‬ ‫לתת‬ ‫מנת‬ ‫על‬
-‫ה‬ "‫"ריקון‬ ‫שקצב‬ ‫לדאוג‬ ‫יש‬ ,‫זאת‬ ‫עם‬ ‫יחד‬-‫ה‬ "‫"ריקון‬ ‫שקצב‬ ‫לדאוג‬ ‫יש‬ ,‫זאת‬ ‫עם‬ ‫יחד‬ram_blocksram_blocks,‫שלו‬ ‫המילוי‬ ‫מקצב‬ ‫יותר‬ ‫מהיר‬ ‫יהיה‬,‫שלו‬ ‫המילוי‬ ‫מקצב‬ ‫יותר‬ ‫מהיר‬ ‫יהיה‬
.‫הפיקסלים‬ ‫של‬ "‫"דריסה‬ ‫למנוע‬ ‫מנת‬ ‫על‬.‫הפיקסלים‬ ‫של‬ "‫"דריסה‬ ‫למנוע‬ ‫מנת‬ ‫על‬
‫שנבחנו‬ ‫אלטרנטיבות‬‫שנבחנו‬ ‫אלטרנטיבות‬
-‫ב‬ ‫שהוסבר‬ ‫כפי‬-‫ב‬ ‫שהוסבר‬ ‫כפי‬WrPixelsClientWrPixelsClient-‫מה‬ ‫רגיל‬ ‫בסדר‬ ‫נעשית‬ ‫היתה‬ ‫השליפה‬ ,-‫מה‬ ‫רגיל‬ ‫בסדר‬ ‫נעשית‬ ‫היתה‬ ‫השליפה‬ ,ram_blocksram_blocks‫אילו‬‫אילו‬
."‫בלוק‬ ‫אחר‬ ‫"בלוק‬ ‫של‬ ‫בסדר‬ ‫מראש‬ ‫הפיקסלים‬ ‫את‬ ‫בו‬ ‫לאחסן‬ ‫מחליטים‬ ‫היינו‬."‫בלוק‬ ‫אחר‬ ‫"בלוק‬ ‫של‬ ‫בסדר‬ ‫מראש‬ ‫הפיקסלים‬ ‫את‬ ‫בו‬ ‫לאחסן‬ ‫מחליטים‬ ‫היינו‬
66
‫המידע‬ ‫–עיבוד‬ ‫שני‬ ‫חלק‬‫המידע‬ ‫–עיבוד‬ ‫שני‬ ‫חלק‬
67
DCT AlgorithmDCT Algorithm
68
DCT AlgorithmDCT Algorithm
CC==
DCT(Block) = C * Block * CDCT(Block) = C * Block * C’’
69
DCTDCT
:‫תיאור‬
:‫הבאה‬ ‫בצורה‬ ‫מקדמים‬ ‫במטריצת‬ ‫המטריצה‬ ‫של‬ ‫הכפלה‬ ‫מבצע‬ ‫המודל‬
."‫"זיגזג‬ ‫בסדר‬ ‫התוצאה‬ ‫את‬ ‫ופולט‬
Input:
data_in:‫בייצוג‬ ‫מספר‬fp, ‫של‬ ‫מבלוק‬ ‫כחלק‬64‫המיצגים‬ ‫מספרים‬
‫מטריצה‬8X8‫לימין‬ ‫שמאל‬ ‫שורה‬ ‫אחרי‬ ‫.שורה‬
spen_in:) ‫הבלוק‬ ‫כניסת‬ ‫זמן‬ ‫כל‬ ‫דלוק‬64*8+1‫מחזורים‬ ).
d_in_valid:‫בכניסת‬ ‫דלוק‬fp‫אחד‬ ‫)מחזור‬ ‫.)אחד‬
rst, mclk
Output:
data_out:‫בייצוג‬ ‫מספר‬fp, ‫כחלק‬ ,‫המטריצות‬ ‫מכפלת‬ ‫תוצאת‬ ‫שהוא‬
‫של‬ ‫מבלוק‬64‫מטריצה‬ ‫המיצגים‬ ‫מספרים‬8X8‫"זיגזג‬ ‫."בסידור‬
spen_out:) ‫הבלוק‬ ‫יציאת‬ ‫זמן‬ ‫כל‬ ‫דלוק‬64*8+1‫מחזורים‬ ).
d_out_valid:‫ביציאת‬ ‫דלוק‬fp‫אחד‬ ‫)מחזור‬ ‫.)אחד‬
:‫הערות‬
‫תשמש‬ ‫קבועים‬ ‫מטריצת‬ ‫אותה‬ ‫ולכן‬ ‫אורטוגונלית‬ ‫היא‬ ‫המטריצה‬
.‫ומימין‬ ‫משמאל‬ ‫להכפלה‬
‫נמתין‬ ‫האחרון‬ ‫האיבר‬ ‫כניסת‬ ‫מרגע‬17.‫הראשון‬ ‫האיבר‬ ‫ליציאת‬ ‫מחזורים‬
1
C In C−
× ×
1 T
C C−
=
T
input
70
+ 1 1 0 1 0 1 1 0…
valid
x
ROM
DCT – block diagramDCT – block diagram
data_in[23:0]
data_out[23:0]
24
24
1
‫שנרשום‬ ‫ראשונה‬ ‫פעם‬ ‫וזו‬ ‫במידה‬
-‫ה‬ ‫במקום‬i‫הנוכחי‬ ‫בבלוק‬ ‫בטיפול‬
‫ה‬ ‫את‬ ‫נרשום‬data_in‫נסכום‬ ‫אחרת‬
‫משמאל‬ ‫הכפלה‬ ‫של‬ ‫מצב‬ ‫בין‬ ‫יברור‬
‫)שאז‬ ‫מימין‬ ‫להכפלה‬ (‫נכנסת‬ ‫)מטריצה‬
‫הקודמת‬ ‫ההכפלה‬ ‫תוצאת‬ ‫היא‬ ‫המטריצה‬
‫ב‬ ‫ששמורה‬ram(
‫וולידציה‬ ‫מערך‬
ram
64 fp
71
:‫הנכנס‬ ‫הבלוק‬ ‫תחילת‬:‫הנכנס‬ ‫הבלוק‬ ‫תחילת‬
‫ה‬spen_in‫עולה‬
spen_out‫וה‬d_out_valid‫החוצה‬ ‫דבר‬ ‫שום‬ ‫מוציאים‬ ‫לא‬ ‫אנחנו‬ ‫כולו‬ ‫הבלוק‬ ‫של‬ ‫האינפוטים‬ ‫כל‬ ‫את‬ ‫נקבל‬ ‫שלא‬ ‫)עד‬ ‫.)למטה‬
‫איתחול‬ ‫לצורך‬ ‫נוסף‬ ‫מחזור‬ ‫מקבל‬ ‫הראשון‬ ‫שהאיבר‬ ‫לב‬ ‫נשים‬
SignalsSignals
‫החוצה‬ ‫איברים‬ ‫הוצאת‬‫החוצה‬ ‫איברים‬ ‫הוצאת‬::
‫שה‬ ‫שמהרגע‬spen_out.(‫עמודה‬ ‫כפול‬ ‫שורה‬ ‫של‬ ‫מכפלה‬ ‫בעצם‬ ‫)אחרי‬ ‫החוצה‬ ‫אחד‬ ‫איבר‬ ‫יוצא‬ ‫מחזורים‬ ‫שמונה‬ ‫כל‬ ‫עולה‬ ,
72
:‫מקבילית‬ ‫עבודה‬:‫מקבילית‬ ‫עבודה‬
‫שלושה‬DCT: ‫במקביל‬ ‫עובדים‬b2v_DCT_Y , b2v_DCT_Cb , b2v_DCT_Cr‫סיגנלי‬ ‫לכולם‬ .
) ‫זהים‬ ‫מערכת‬clk,rst,spen_in,d_in_valid.‫מקדמים‬ ‫מטריצת‬ ‫ואותה‬ (
73
:‫תכנון‬ ‫שיקולי‬:‫תכנון‬ ‫שיקולי‬
‫כל‬ ‫של‬ ‫קריאה‬‫כל‬ ‫של‬ ‫קריאה‬inputinput‫בלבד‬ ‫אחת‬ ‫פעם‬‫בלבד‬ ‫אחת‬ ‫פעם‬
‫וולידציה‬ ‫מטריצת‬ ‫בעזרת‬ – ‫איתחול‬‫וולידציה‬ ‫מטריצת‬ ‫בעזרת‬ – ‫איתחול‬
‫לוגי‬ ‫ענן‬ ,‫ליצוג‬ ‫אחת‬ ‫מטריצה‬ ‫מספיקה‬ ‫ולכן‬ ,‫אורטוגונליות‬ ‫שהמטריצות‬ ‫לב‬ ‫נשים‬ – ‫קבועים‬ ‫מטריצת‬‫לוגי‬ ‫ענן‬ ,‫ליצוג‬ ‫אחת‬ ‫מטריצה‬ ‫מספיקה‬ ‫ולכן‬ ,‫אורטוגונליות‬ ‫שהמטריצות‬ ‫לב‬ ‫נשים‬ – ‫קבועים‬ ‫מטריצת‬
.‫קריאה‬ ‫סדר‬ ‫את‬ ‫יקבע‬.‫קריאה‬ ‫סדר‬ ‫את‬ ‫יקבע‬
"‫"זיגזג‬ ‫בסדר‬ ‫התוצאות‬ ‫את‬ ‫להוציא‬ ‫מנת‬ ‫על‬ ‫מימין‬ ‫להכפיל‬ ‫סדר‬ ‫באיזה‬ ‫שקובע‬ ‫מודל‬ – ‫זיגזג‬"‫"זיגזג‬ ‫בסדר‬ ‫התוצאות‬ ‫את‬ ‫להוציא‬ ‫מנת‬ ‫על‬ ‫מימין‬ ‫להכפיל‬ ‫סדר‬ ‫באיזה‬ ‫שקובע‬ ‫מודל‬ – ‫זיגזג‬
‫אחד‬ ‫וסכימה‬ ‫מכפלה‬ ‫במודל‬ ‫שימוש‬‫אחד‬ ‫וסכימה‬ ‫מכפלה‬ ‫במודל‬ ‫שימוש‬
‫קבוע‬ ‫וטרופוט‬ ‫קליטה‬ ‫קצב‬ ‫על‬ ‫שמירה‬‫קבוע‬ ‫וטרופוט‬ ‫קליטה‬ ‫קצב‬ ‫על‬ ‫שמירה‬
‫שנבחנו‬ ‫:אלטרנטיבות‬
•‫ב‬ ‫המודל‬ ‫את‬ ‫להחליף‬ ‫האופציה‬ ‫נבחנה‬ – ‫זיגזג‬ROM‫שלטעמם‬ ‫למרות‬ ,‫במקום‬ ‫חיסכון‬ ‫משיקולי‬ ‫נפסל‬ .
.‫אלגנטי‬ ‫יותר‬ ‫זה‬ ‫אחרים‬ ‫של‬
•‫המטריצה‬ ‫את‬ ‫לאתחל‬ ‫האופציה‬ ‫נבחנה‬ – ‫ערכים‬ ‫איתחול‬64‫למערך‬ ‫האופציה‬ ‫נבחרה‬ .‫אינפוטים‬
.‫שעון‬ ‫משיקולי‬ ,‫ולידציה‬
74
QuantizationQuantization
75
QuantizationQuantization
‫קלט‬‫קלט‬
6464‫של‬ ‫ערכים‬‫של‬ ‫ערכים‬YY‫או‬‫או‬CbCb‫או‬‫או‬CrCr‫בצורה‬ ‫הזורמים‬ (‫)בלוק‬‫בצורה‬ ‫הזורמים‬ (‫)בלוק‬
‫פעולת‬ ‫לאחר‬ ‫טורית‬‫פעולת‬ ‫לאחר‬ ‫טורית‬DCTDCT‫בצורת‬ ‫מיוצגים‬ ‫)הערכים‬‫בצורת‬ ‫מיוצגים‬ ‫)הערכים‬floating pointfloating point((
‫נתונים‬ ‫עיבוד‬‫נתונים‬ ‫עיבוד‬
1)1).‫מתאים‬ ‫קוונטיזציה‬ ‫בערך‬ ‫מחולק‬ ‫ערך‬ ‫כל‬.‫מתאים‬ ‫קוונטיזציה‬ ‫בערך‬ ‫מחולק‬ ‫ערך‬ ‫כל‬
2)2)‫מסעיף‬ ‫התוצאה‬ ‫המרת‬‫מסעיף‬ ‫התוצאה‬ ‫המרת‬11‫בטווח‬ ‫שלמים‬ ‫למספרים‬‫בטווח‬ ‫שלמים‬ ‫למספרים‬
num< 1024num< 1024> 1024> 1024. -. -
‫פלט‬‫פלט‬
6464‫ערכי‬‫ערכי‬DCTDCT‫של‬ ‫ושלמים‬ ‫מקוונטטים‬‫של‬ ‫ושלמים‬ ‫מקוונטטים‬YY‫או‬‫או‬CbCb‫או‬‫או‬CrCr
.‫טורית‬ ‫בצורה‬ ‫הזורמים‬ (‫)בלוק‬.‫טורית‬ ‫בצורה‬ ‫הזורמים‬ (‫)בלוק‬‫המשלים‬ ‫בצורת‬ ‫מיוצגים‬ ‫)הערכים‬‫המשלים‬ ‫בצורת‬ ‫מיוצגים‬ ‫)הערכים‬
-‫ל‬-‫ל‬22((
76
Data_in
[23:0[ Data_out
[10:0[
ROM Adress [5:0[ROM
Quantization
Table
multiply
ing
Quantization
Float
To
int
1/Quantization
value [23:0[
77
ROM
Quantization
Table
multiply
ing
Quantization
Float
To
int
24’hfc00_08 =
252
24’h4000_fd =
1/16
6’h03 = 3
11’h010 = 16
78
Example of signalsExample of signals
Output with zeros because the quantization
Delaying of one cycle
79
QuantizationQuantization
‫פעולה‬ ‫ועקרון‬ ‫תכנון‬ ‫שיקולי‬‫פעולה‬ ‫ועקרון‬ ‫תכנון‬ ‫שיקולי‬
‫של‬ ‫נפרד‬ ‫מודול‬ ‫יצירת‬‫של‬ ‫נפרד‬ ‫מודול‬ ‫יצירת‬float_to_intfloat_to_int‫פעולה‬ ‫של‬ ‫הקצה‬ ‫מקרי‬ ‫בכל‬ ‫להתמקד‬ ‫מנת‬ ‫על‬‫פעולה‬ ‫של‬ ‫הקצה‬ ‫מקרי‬ ‫בכל‬ ‫להתמקד‬ ‫מנת‬ ‫על‬
.‫זו‬.‫זו‬
‫יצירת‬‫יצירת‬cyclecycle‫גבוה‬ ‫אינו‬ ‫המחיר‬ ‫כאשר‬ ‫התוצאה‬ ‫את‬ ‫לוודא‬ ‫מנת‬ ‫על‬ ‫לפלט‬ ‫קלט‬ ‫בין‬‫גבוה‬ ‫אינו‬ ‫המחיר‬ ‫כאשר‬ ‫התוצאה‬ ‫את‬ ‫לוודא‬ ‫מנת‬ ‫על‬ ‫לפלט‬ ‫קלט‬ ‫בין‬
))pipelinepipeline((
‫שנבחנו‬ ‫אלטרנטיבות‬‫שנבחנו‬ ‫אלטרנטיבות‬
-‫ל‬ ‫המרה‬ ‫במקום‬-‫ל‬ ‫המרה‬ ‫במקום‬intint-‫ל‬ ‫ישירה‬ ‫המרה‬-‫ל‬ ‫ישירה‬ ‫המרה‬categorycategory-‫ו‬-‫ו‬offsetoffset.‫החשוב‬ ‫הפלט‬ ‫זהו‬ ‫כי‬.‫החשוב‬ ‫הפלט‬ ‫זהו‬ ‫כי‬
-‫ה‬ ‫של‬ ‫האקספוננט‬ :‫יתרונות‬-‫ה‬ ‫של‬ ‫האקספוננט‬ :‫יתרונות‬floatfloat-‫ל‬ ‫זהה‬-‫ל‬ ‫זהה‬categorycategory-‫ה‬ ‫ומקום‬ ,-‫ה‬ ‫ומקום‬ ,offsetoffset‫)צמוד‬ ‫ידוע‬‫)צמוד‬ ‫ידוע‬
. (‫לנקודה‬. (‫לנקודה‬
‫מקדם‬ ‫גם‬ ‫קיים‬ ‫הבא‬ ‫במודול‬ :‫חסרונות‬‫מקדם‬ ‫גם‬ ‫קיים‬ ‫הבא‬ ‫במודול‬ :‫חסרונות‬DCDC‫לאחר‬ ‫לקיימו‬ ‫אפשר‬ ‫שאי‬ ‫חיסור‬ ‫הדורש‬‫לאחר‬ ‫לקיימו‬ ‫אפשר‬ ‫שאי‬ ‫חיסור‬ ‫הדורש‬
-‫ל‬ ‫מתחלק‬ ‫שהמספר‬-‫ל‬ ‫מתחלק‬ ‫שהמספר‬categorycategory-‫ו‬-‫ו‬offsetoffset..
.‫עבודה‬ ‫יותר‬ ‫דורש‬ ‫היה‬ ‫והשינוי‬ ,‫הבא‬ ‫המודול‬ ‫את‬ ‫קודם‬ ‫בניתי‬ :‫חסרונות‬.‫עבודה‬ ‫יותר‬ ‫דורש‬ ‫היה‬ ‫והשינוי‬ ,‫הבא‬ ‫המודול‬ ‫את‬ ‫קודם‬ ‫בניתי‬ :‫חסרונות‬
80
RLC_DPCMRLC_DPCM
‫מטרה‬‫מטרה‬
.‫הקיים‬ ‫המידע‬ ‫את‬ ‫לכווץ‬.‫הקיים‬ ‫המידע‬ ‫את‬ ‫לכווץ‬
‫הדרך‬‫הדרך‬
I.I.‫אלא‬ ‫כפלט‬ ‫יוצאים‬ ‫אינם‬ ‫אפס‬ ‫ערכי‬‫אלא‬ ‫כפלט‬ ‫יוצאים‬ ‫אינם‬ ‫אפס‬ ‫ערכי‬
.‫אפס‬ ‫שאינם‬ ‫לערכים‬ ‫מתווספים‬.‫אפס‬ ‫שאינם‬ ‫לערכים‬ ‫מתווספים‬
II.II.‫מחדש‬ ‫נערכים‬ ‫אפס‬ ‫שאינם‬ ‫ערכים‬‫מחדש‬ ‫נערכים‬ ‫אפס‬ ‫שאינם‬ ‫ערכים‬
."‫האפמן‬ ‫"קוד‬ ‫בעזרת‬ ‫קידוד‬ ‫לקראת‬."‫האפמן‬ ‫"קוד‬ ‫בעזרת‬ ‫קידוד‬ ‫לקראת‬
81
RLC_DPCMRLC_DPCM
‫קלט‬‫קלט‬
6464‫ערכי‬‫ערכי‬DCTDCT‫ו‬ ‫מקוונטטים‬‫ו‬ ‫מקוונטטים‬‫שלמים‬‫שלמים‬‫של‬‫של‬YY‫או‬‫או‬CbCb‫או‬‫או‬CrCr,‫ערך‬ ‫כל‬ .‫טורית‬ ‫בצורה‬ ‫הזורמים‬,‫ערך‬ ‫כל‬ .‫טורית‬ ‫בצורה‬ ‫הזורמים‬
,‫לדוגמה‬,‫לדוגמה‬aa‫מקיים‬ ,‫מקיים‬ ,10241024<<aa>1024>1024--
:‫הערות‬:‫הערות‬
‫של‬ ‫ביחידות‬ ‫מאוגדים‬ ‫הערכים‬‫של‬ ‫ביחידות‬ ‫מאוגדים‬ ‫הערכים‬6464."‫"בלוק‬ ,‫להלן‬ ,."‫"בלוק‬ ,‫להלן‬ ,
-‫ל‬ ‫המשלים‬ ‫בצורת‬ ‫מיוצגים‬ ‫הערכים‬-‫ל‬ ‫המשלים‬ ‫בצורת‬ ‫מיוצגים‬ ‫הערכים‬22..
‫מקדם‬ ‫הוא‬ "‫ב"בלוק‬ ‫הראשון‬ ‫הערך‬ ‫כי‬ ‫לב‬ ‫נשים‬‫מקדם‬ ‫הוא‬ "‫ב"בלוק‬ ‫הראשון‬ ‫הערך‬ ‫כי‬ ‫לב‬ ‫נשים‬DCDC‫מקדמי‬ ‫והשאר‬‫מקדמי‬ ‫והשאר‬ACAC..
‫נתונים‬ ‫עיבוד‬‫נתונים‬ ‫עיבוד‬
n‫בבלוק‬ ‫אחריו‬ ‫אם‬ ‫ורק‬ ,‫נתונים‬ ‫בעיבוד‬ ‫נרשם‬ ‫אלא‬ ‫כפלט‬ ‫יוצא‬ ‫אינו‬ ‫אפס‬ ‫שהינו‬ ‫ערך‬ ‫כל‬‫בבלוק‬ ‫אחריו‬ ‫אם‬ ‫ורק‬ ,‫נתונים‬ ‫בעיבוד‬ ‫נרשם‬ ‫אלא‬ ‫כפלט‬ ‫יוצא‬ ‫אינו‬ ‫אפס‬ ‫שהינו‬ ‫ערך‬ ‫כל‬
‫)אם‬ .‫לפניו‬ ‫שהופיעו‬ ‫האפסים‬ ‫מספר‬ ‫ואיתו‬ ‫כפלט‬ ‫הזה‬ ‫הערך‬ ‫ייצא‬ ,‫אפס‬ ‫שאינו‬ ‫ערך‬ ‫יופיע‬‫)אם‬ .‫לפניו‬ ‫שהופיעו‬ ‫האפסים‬ ‫מספר‬ ‫ואיתו‬ ‫כפלט‬ ‫הזה‬ ‫הערך‬ ‫ייצא‬ ,‫אפס‬ ‫שאינו‬ ‫ערך‬ ‫יופיע‬
-‫מ‬ ‫יותר‬ ‫נרשמו‬-‫מ‬ ‫יותר‬ ‫נרשמו‬1515) ‫הערכים‬ ‫זוג‬ ‫ייצאו‬ ‫אפסים‬) ‫הערכים‬ ‫זוג‬ ‫ייצאו‬ ‫אפסים‬0,150,15‫שאינו‬ ‫הערך‬ ‫ואח"כ‬ ,‫שצריך‬ ‫כמה‬ (‫שאינו‬ ‫הערך‬ ‫ואח"כ‬ ,‫שצריך‬ ‫כמה‬ (
( .‫שנותר‬ ‫האפסים‬ ‫מספר‬ ‫עם‬ ‫יחד‬ ‫אפס‬( .‫שנותר‬ ‫האפסים‬ ‫מספר‬ ‫עם‬ ‫יחד‬ ‫אפס‬
n‫קטגוריה‬ ‫נמצא‬ ,‫כלומר‬ .‫הקטגוריה‬ ,‫להלן‬ ,‫משתייך‬ ‫הערך‬ ‫אליה‬ ‫הקבוצה‬ ‫מציאת‬‫קטגוריה‬ ‫נמצא‬ ,‫כלומר‬ .‫הקטגוריה‬ ,‫להלן‬ ,‫משתייך‬ ‫הערך‬ ‫אליה‬ ‫הקבוצה‬ ‫מציאת‬nn‫לערך‬‫לערך‬
aa-‫ש‬ ‫כך‬-‫ש‬ ‫כך‬22)^)^n-1) =<|a|< 2^nn-1) =<|a|< 2^n..
n-‫ה‬ ‫מציאת‬-‫ה‬ ‫מציאת‬offsetoffset.‫עולה‬ ‫בסדר‬ ‫הקטגוריה‬ ‫בתוך‬ ‫הערך‬ ‫של‬ ‫המיקום‬ ,.‫עולה‬ ‫בסדר‬ ‫הקטגוריה‬ ‫בתוך‬ ‫הערך‬ ‫של‬ ‫המיקום‬ ,
‫פלט‬‫פלט‬
-‫ה‬ ,‫הערך‬ ‫של‬ ‫הקטגוריה‬ ‫את‬ ‫הכוללים‬ ‫ערכים‬-‫ה‬ ,‫הערך‬ ‫של‬ ‫הקטגוריה‬ ‫את‬ ‫הכוללים‬ ‫ערכים‬offsetoffset. ‫ברצף‬ ‫לפניו‬ ‫שהופיעו‬ ‫האפסים‬ ‫ומספר‬ ‫שלו‬. ‫ברצף‬ ‫לפניו‬ ‫שהופיעו‬ ‫האפסים‬ ‫ומספר‬ ‫שלו‬
‫הכמות‬ ‫כי‬ ‫יודעים‬ ‫אנו‬ ‫רק‬ ‫שיצאו‬ ‫הפלט‬ ‫ערכי‬ ‫כמות‬ ‫מהי‬ ‫יודעים‬ ‫איננו‬ ‫כעת‬ ‫כי‬ ‫לב‬ ‫נשים‬‫הכמות‬ ‫כי‬ ‫יודעים‬ ‫אנו‬ ‫רק‬ ‫שיצאו‬ ‫הפלט‬ ‫ערכי‬ ‫כמות‬ ‫מהי‬ ‫יודעים‬ ‫איננו‬ ‫כעת‬ ‫כי‬ ‫לב‬ ‫נשים‬
-‫מ‬ ‫גדולה‬ ‫אינה‬-‫מ‬ ‫גדולה‬ ‫אינה‬6464..
) ‫ערכים‬ ‫זוג‬ ‫יישלח‬ ‫אפס‬ ‫הינו‬ ‫בבלוק‬ ‫האחרון‬ ‫הערך‬ ‫אם‬ ‫כן‬ ‫כמו‬) ‫ערכים‬ ‫זוג‬ ‫יישלח‬ ‫אפס‬ ‫הינו‬ ‫בבלוק‬ ‫האחרון‬ ‫הערך‬ ‫אם‬ ‫כן‬ ‫כמו‬0,00,0.‫בלוק‬ ‫סוף‬ ‫לסמן‬ (.‫בלוק‬ ‫סוף‬ ‫לסמן‬ (
82
‫מחדש‬ ‫הערכים‬ ‫הצגת‬‫מחדש‬ ‫הערכים‬ ‫הצגת‬
‫קטגוריה‬‫קטגוריה‬
83
‫מחדש‬ ‫הערכים‬ ‫הצגת‬‫מחדש‬ ‫הערכים‬ ‫הצגת‬
-‫ה‬-‫ה‬OffsetOffset‫את‬ ‫מציג‬‫את‬ ‫מציג‬‫מיקום‬‫מיקום‬
‫הקטגוריה‬ ‫בתוך‬ ‫המספר‬‫הקטגוריה‬ ‫בתוך‬ ‫המספר‬‫בסדר‬‫בסדר‬
‫עולה‬‫עולה‬..
‫קטגוריה‬ ‫לדוגמה‬‫קטגוריה‬ ‫לדוגמה‬33‫בה‬‫בה‬
:‫המספרים‬ ‫נמצאים‬:‫המספרים‬ ‫נמצאים‬
--77,,……-,-,4,44,4,,……77
-‫ה‬ ‫כי‬ ‫לראות‬ ‫ניתן‬-‫ה‬ ‫כי‬ ‫לראות‬ ‫ניתן‬offsetoffset‫תמיד‬‫תמיד‬
-‫ה‬ ‫כן‬ ‫כמו‬ .‫חיובי‬-‫ה‬ ‫כן‬ ‫כמו‬ .‫חיובי‬offsetoffset‫של‬‫של‬
‫המספר‬ ‫הוא‬ ‫חיובי‬ ‫מספר‬‫המספר‬ ‫הוא‬ ‫חיובי‬ ‫מספר‬
.‫סימן‬ ‫בביט‬ ‫צורך‬ ‫ללא‬ ,‫עצמו‬.‫סימן‬ ‫בביט‬ ‫צורך‬ ‫ללא‬ ,‫עצמו‬
-‫ה‬ ‫של‬ ‫הביטים‬ ‫מספר‬-‫ה‬ ‫של‬ ‫הביטים‬ ‫מספר‬offsetoffset
‫המספר‬ ‫מערך‬ ‫אחד‬ ‫בביט‬ ‫קטן‬‫המספר‬ ‫מערך‬ ‫אחד‬ ‫בביט‬ ‫קטן‬
.‫בכניסה‬.‫בכניסה‬
OffsetOffset ‫מציאת‬‫מציאת‬‫המספר‬‫המספר‬ offsetoffset
77 77
66 66
55 55
44 44
-4-4 33
-5-5 22
-6-6 11
-7-7 00
84
‫בבינארי‬ ‫מחדש‬ ‫הערכים‬ ‫הצגת‬‫בבינארי‬ ‫מחדש‬ ‫הערכים‬ ‫הצגת‬
‫המספר‬‫המספר‬ ‫בבינארי‬‫בבינארי‬
77 0000000011100000000111
66 0000000011000000000110
55 0000000010100000000101
44 0000000010000000000100
-4-4 111111111100111111111100
-5-5 111111111011111111111011
-6-6 111111111010111111111010
-7-7 111111111001111111111001
‫קטגוריה‬ ‫מציאת‬‫קטגוריה‬ ‫מציאת‬33
]]1111[‫ביטים‬[‫ביטים‬
OffsetOffset
]]1010[‫ביטים‬[‫ביטים‬
0000000000000000111111 00000000000000111111
0000000000000000111010 00000000000000111010
0000000000000000110101 00000000000000110101
0000000000000000110000 00000000000000110000
1111111111111111001111 00000000000000001111
1111111111111111001010 00000000000000001010
1111111111111111000101 000000000000000000
11
a=a-
1
If (a<0(
‫הפחתה‬
‫לערכים‬
‫השליליים‬
85
Data_in
[10:0[
Category[3:0[
RLC_DPCM
Ofset[9:0
[
Num of zeros
[3:0[
d_out_validd_in_valid
1) if the
input is zero
just count it.
2) If not,
find the large
bit of the
number
(category)
3) The
location of
the input in
the category
Inputs & Outputs
86
11’h000
Not relevant
RLC_DPCM
Not relevant
Not relevant
d_out_valid ==0d_in_valid==1
Num==0
Valid data became to not valid
Data_in is zero
a=0
87
‫המידע‬ ‫דילול‬ ‫של‬ ‫דוגמאות‬‫המידע‬ ‫דילול‬ ‫של‬ ‫דוגמאות‬
A lot of Valid data became to not valid data thanks to the
quantization that zero the data.
‫אפסים‬
‫האפסים‬ ‫מספר‬
88
‫אפסים‬ ‫לדילול‬ ‫דוגמה‬‫אפסים‬ ‫לדילול‬ ‫דוגמה‬
63‫כערך‬ ‫יוצאים‬ ‫בכניסה‬ ‫אפס‬ ‫ערכי‬DC) ‫וערך‬0,0.‫ביציאה‬ ‫בלבד‬ (
63‫רק‬ ‫מתוכם‬ ‫ערכים‬5‫רק‬ ‫ובהמשך‬ ‫אפסים‬ ‫עם‬ ‫המעורבים‬ ‫אפס‬ ‫שאינם‬ ‫ערכים‬
-‫כ‬ ‫יוצאים‬ .‫אפסים‬5) ‫וערך‬ ‫ערכים‬0,0‫בלבד‬ (
89
‫בלוקים‬ ‫של‬ ‫באוסף‬ ‫אפסים‬ ‫לדילול‬ ‫דוגמה‬‫בלוקים‬ ‫של‬ ‫באוסף‬ ‫אפסים‬ ‫לדילול‬ ‫דוגמה‬
‫כניסה‬
‫יציאה‬
90
11’h050
= 80
4’b0111 = 7
RLC_DPCM
10’b00010100
00 = 80
4’b0001 = 1
d_out_valid ==1d_in_valid==1
Num!=0 Num =
00001010000
Category = 7
Offset = 80
0001010000
Next Data_in is positive
a>0
91
11’h7b0
= -80
4’b0111 = 7
RLC_DPCM
10’b
00000101111 =
474’b0001 = 1
d_out_valid ==1d_in_valid==1
Num!=0 Num =
11110110000
Category = 7
Offset =
00000101111
Next Data_in is negative
a<0
92
‫במקביל‬ ‫המעובדים‬ ‫בלוקים‬ ‫לשלושה‬ ‫דוגמה‬‫במקביל‬ ‫המעובדים‬ ‫בלוקים‬ ‫לשלושה‬ ‫דוגמה‬
in
out
C
b
Cr
Y
93
,‫זה‬ ‫מודול‬,‫זה‬ ‫מודול‬RLC_DPCMRLC_DPCM‫פעם‬ ‫המידע‬ ‫את‬ ‫מקבל‬ ,‫פעם‬ ‫המידע‬ ‫את‬ ‫מקבל‬ ,
-‫ב‬-‫ב‬88,‫בכניסה‬ ‫מידע‬ ‫נאגר‬ ‫לא‬ ‫לכן‬ ,‫שעון‬ ‫מחזורי‬,‫בכניסה‬ ‫מידע‬ ‫נאגר‬ ‫לא‬ ‫לכן‬ ,‫שעון‬ ‫מחזורי‬
.‫פשוטה‬ ‫המידע‬ ‫וקבלת‬.‫פשוטה‬ ‫המידע‬ ‫וקבלת‬
‫לאורך‬ ‫יציב‬ ‫להיות‬ ‫צריך‬ ‫המידע‬ ‫ביציאה‬‫לאורך‬ ‫יציב‬ ‫להיות‬ ‫צריך‬ ‫המידע‬ ‫ביציאה‬33‫מחזורי‬‫מחזורי‬
‫קיימים‬ ‫כי‬ ‫בדיוק‬ ‫שעון‬‫קיימים‬ ‫כי‬ ‫בדיוק‬ ‫שעון‬33‫של‬ ‫מודולים‬‫של‬ ‫מודולים‬RLC_DPCMRLC_DPCM
‫פעם‬ ‫כל‬ ‫קורא‬ ‫אחריהם‬ ‫הבא‬ ‫המודול‬ ‫אך‬ ‫במקביל‬‫פעם‬ ‫כל‬ ‫קורא‬ ‫אחריהם‬ ‫הבא‬ ‫המודול‬ ‫אך‬ ‫במקביל‬
.‫מהשלושה‬ ‫מאחד‬ ‫רק‬.‫מהשלושה‬ ‫מאחד‬ ‫רק‬
‫תזמון‬‫תזמון‬‫והיציאה‬ ‫הכניסה‬‫והיציאה‬ ‫הכניסה‬
94
‫בלוק‬ ‫בסוף‬ ‫האותות‬ ‫לתזמון‬ ‫דוגמה‬‫בלוק‬ ‫בסוף‬ ‫האותות‬ ‫לתזמון‬ ‫דוגמה‬
‫המידע‬ ‫בכניסה‬
-‫ל‬ ‫בתוקף‬cycle,‫אחד‬
-‫ל‬ ‫ביציאה‬ ‫אך‬3
cycles
Spen_in‫ולאחר‬ ‫יורד‬
3‫יורד‬ ‫מחזורים‬
spen_out
end of block
‫מחזורי‬ ‫לשלושה‬ ‫מופיע‬
‫שעון‬
95
‫ופתרונה‬ ‫המוצא‬ ‫בתזמון‬ ‫בעיה‬‫ופתרונה‬ ‫המוצא‬ ‫בתזמון‬ ‫בעיה‬
,‫במוצא‬ ‫כלל‬ ‫ערכים‬ ‫אין‬ ,‫אפס‬ ‫הם‬ ‫בכניסה‬ ‫הערכים‬ ‫עוד‬ ‫כל‬,‫במוצא‬ ‫כלל‬ ‫ערכים‬ ‫אין‬ ,‫אפס‬ ‫הם‬ ‫בכניסה‬ ‫הערכים‬ ‫עוד‬ ‫כל‬
‫לאחר‬ ‫אם‬ ,‫,לדוגמה‬ ‫אבל‬‫לאחר‬ ‫אם‬ ,‫,לדוגמה‬ ‫אבל‬6060‫שונה‬ ‫ערך‬ ‫מופיע‬ ‫אפסים‬‫שונה‬ ‫ערך‬ ‫מופיע‬ ‫אפסים‬
‫לצאת‬ ‫אמורים‬ ,‫מאפס‬‫לצאת‬ ‫אמורים‬ ,‫מאפס‬44.‫ברצף‬ ‫מספרים‬ ‫זוגות‬.‫ברצף‬ ‫מספרים‬ ‫זוגות‬
((0,150,15) , () , (0,150,15) , () , (0,150,15) , () , (a,12a,12))
‫הבעיה‬‫הבעיה‬‫להישאר‬ ‫צריך‬ ‫ערך‬ ‫כל‬ :‫להישאר‬ ‫צריך‬ ‫ערך‬ ‫כל‬ :33‫המוצא‬ ,‫כן‬ ‫אם‬ ,‫מחזורים‬‫המוצא‬ ,‫כן‬ ‫אם‬ ,‫מחזורים‬
-‫ל‬ ‫תפוס‬-‫ל‬ ‫תפוס‬1212‫לאחר‬ ‫אבל‬ ,‫מחזורים‬‫לאחר‬ ‫אבל‬ ,‫מחזורים‬88‫ערך‬ ‫נכנס‬ ‫מחזורים‬‫ערך‬ ‫נכנס‬ ‫מחזורים‬
.‫חדש‬.‫חדש‬
‫הפתרון‬‫הפתרון‬‫להפעיל‬ ‫ניתן‬ :‫להפעיל‬ ‫ניתן‬ :FIFOFIFO‫מיותר‬ ‫זה‬ ‫פתרון‬ ,‫לדעתי‬ ,‫אך‬ ,‫מיותר‬ ‫זה‬ ‫פתרון‬ ,‫לדעתי‬ ,‫אך‬ ,
‫לשמור‬ ‫וצריך‬ ‫ידועים‬ ‫שאינם‬ ‫ערכים‬ ‫הרבה‬ ‫כאן‬ ‫אין‬ ‫כי‬‫לשמור‬ ‫וצריך‬ ‫ידועים‬ ‫שאינם‬ ‫ערכים‬ ‫הרבה‬ ‫כאן‬ ‫אין‬ ‫כי‬
‫האחרון‬ ‫הערך‬ ‫של‬ ‫שמירה‬ ‫רק‬ ‫ונדרשת‬ ,‫אותם‬‫האחרון‬ ‫הערך‬ ‫של‬ ‫שמירה‬ ‫רק‬ ‫ונדרשת‬ ,‫אותם‬))a,12a,12((..
16+16+16+12=60
96
‫הערך‬‫הערך‬DCDC
-‫ה‬ ‫ערך‬ ‫הוא‬ ‫הבלוק‬ ‫של‬ ‫הראשון‬ ‫הערך‬-‫ה‬ ‫ערך‬ ‫הוא‬ ‫הבלוק‬ ‫של‬ ‫הראשון‬ ‫הערך‬DCDC..
-‫ה‬ ‫ערך‬-‫ה‬ ‫ערך‬DCDC‫הערכים‬ ‫נעים‬ ‫שסביבו‬ ‫הממוצע‬ ‫הוא‬‫הערכים‬ ‫נעים‬ ‫שסביבו‬ ‫הממוצע‬ ‫הוא‬
.‫הבלוק‬ ‫של‬ ‫הבאים‬.‫הבלוק‬ ‫של‬ ‫הבאים‬
-‫ה‬ ‫קידוד‬-‫ה‬ ‫קידוד‬DCDC‫גדול‬ ‫הפרש‬ ‫שאין‬ ‫ההנחה‬ ‫על-פי‬ ‫נבנה‬‫גדול‬ ‫הפרש‬ ‫שאין‬ ‫ההנחה‬ ‫על-פי‬ ‫נבנה‬
-‫ה‬ ‫ערך‬ ‫בין‬-‫ה‬ ‫ערך‬ ‫בין‬DCDC‫בבלוק‬ ‫לערכו‬ ‫הנוכחי‬ ‫בבלוק‬‫בבלוק‬ ‫לערכו‬ ‫הנוכחי‬ ‫בבלוק‬
-‫ה‬ ‫של‬ ‫המוצא‬ ‫ערך‬ ‫לכן‬ ,‫הקודם‬-‫ה‬ ‫של‬ ‫המוצא‬ ‫ערך‬ ‫לכן‬ ,‫הקודם‬DCDC‫ההפרש‬ ‫הוא‬‫ההפרש‬ ‫הוא‬
.‫הנ"ל‬ ‫הערכים‬ ‫בין‬.‫הנ"ל‬ ‫הערכים‬ ‫בין‬Out = DIFF = DCOut = DIFF = DCii –– DCDCi-1i-1
-‫ה‬ ‫ערך‬-‫ה‬ ‫ערך‬DCDC.‫אפס‬ ‫הוא‬ ‫אם‬ ‫גם‬ ‫מקרה‬ ‫בכל‬ ‫נרשם‬.‫אפס‬ ‫הוא‬ ‫אם‬ ‫גם‬ ‫מקרה‬ ‫בכל‬ ‫נרשם‬
97
-‫ה‬ ‫ערך‬ ‫הצגת‬-‫ה‬ ‫ערך‬ ‫הצגת‬DCDC‫מחדש‬‫מחדש‬
‫למקרה‬ ‫לב‬ ‫לשים‬ ‫יש‬‫למקרה‬ ‫לב‬ ‫לשים‬ ‫יש‬
‫בין‬ ‫ההפרש‬ ‫בו‬ ‫קצה‬‫בין‬ ‫ההפרש‬ ‫בו‬ ‫קצה‬
|-‫מ‬ ‫גדול‬ ‫הערכים‬|-‫מ‬ ‫גדול‬ ‫הערכים‬
10241024‫לערכי‬ ‫לכן‬ ,|‫לערכי‬ ‫לכן‬ ,|
-‫ה‬-‫ה‬DCDC‫קטגוריה‬ ‫יש‬‫קטגוריה‬ ‫יש‬
,‫נוספת‬,‫נוספת‬1111..
-‫ה‬ ‫ערך‬-‫ה‬ ‫ערך‬offsetoffset‫נבנה‬‫נבנה‬
‫לשאר‬ ‫זהה‬ ‫בצורה‬‫לשאר‬ ‫זהה‬ ‫בצורה‬
.‫הערכים‬.‫הערכים‬
98
-‫ה‬ ‫לקידוד‬ ‫דוגמא‬-‫ה‬ ‫לקידוד‬ ‫דוגמא‬DCDC
‫הבלוק‬
‫הבא‬
Category 4 + offset 3 =
-12
DCi – DCi-1 = -25 –(-13( =
-12
DCi – DCi-1 = 8 –(-3( = 11
DCi – DCi-1 = -4 –8 = -12
Category 4 + offset 11 =
11
Category 4 + offset 003 =
-12
99
‫הבלוק‬ ‫לסיום‬ ‫אפשרויות‬ ‫שתי‬ ‫ישנן‬‫הבלוק‬ ‫לסיום‬ ‫אפשרויות‬ ‫שתי‬ ‫ישנן‬
.‫מאפס‬ ‫שונה‬ ‫הנכנס‬ ‫האחרון‬ ‫הערך‬.‫מאפס‬ ‫שונה‬ ‫הנכנס‬ ‫האחרון‬ ‫הערך‬
‫יעלו‬ ‫איתו‬ ‫ויחד‬ ‫כרגיל‬ ‫מקודד‬ ‫יהיה‬ ‫במוצא‬ ‫הערך‬‫יעלו‬ ‫איתו‬ ‫ויחד‬ ‫כרגיל‬ ‫מקודד‬ ‫יהיה‬ ‫במוצא‬ ‫הערך‬
‫הדגלים‬ ‫שעון‬ ‫מחזורי‬ ‫לשלושה‬‫הדגלים‬ ‫שעון‬ ‫מחזורי‬ ‫לשלושה‬““d_out_validd_out_valid”” ““eobeob””..
‫הדגל‬‫הדגל‬““spen_outspen_out””.‫אחריהם‬ ‫אחד‬ ‫שעון‬ ‫מחזור‬ ‫יירד‬.‫אחריהם‬ ‫אחד‬ ‫שעון‬ ‫מחזור‬ ‫יירד‬
.‫אפס‬ ‫הוא‬ ‫הנכנס‬ ‫האחרון‬ ‫הערך‬.‫אפס‬ ‫הוא‬ ‫הנכנס‬ ‫האחרון‬ ‫הערך‬
) ‫יהיה‬ ‫במוצא‬ ‫הערך‬) ‫יהיה‬ ‫במוצא‬ ‫הערך‬0,00,0,(,(
‫כלומר‬‫כלומר‬category = 0 & num_of_zeros =0category = 0 & num_of_zeros =0
.‫הבלוק‬ ‫סיום‬ ‫על‬ ‫להודיע‬ ‫כדי‬.‫הבלוק‬ ‫סיום‬ ‫על‬ ‫להודיע‬ ‫כדי‬
‫הבלוק‬ ‫סוף‬‫הבלוק‬ ‫סוף‬
100
‫דוגמא‬ - ‫הבלוק‬ ‫סוף‬‫דוגמא‬ - ‫הבלוק‬ ‫סוף‬
‫מאפס‬ ‫שונה‬ ‫האחרון‬ ‫המידע‬ '‫א‬ ‫אפשרות‬
‫אפס‬ ‫הוא‬ ‫האחרון‬ ‫המידע‬ '‫ב‬ ‫אפשרות‬
) ‫במוצא‬ ‫המידע‬0,0(
101
RLC_DPCMRLC_DPCM
‫פעולה‬ ‫ועקרון‬ ‫תכנון‬ ‫שיקולי‬‫פעולה‬ ‫ועקרון‬ ‫תכנון‬ ‫שיקולי‬
‫חיובי‬ ‫)במספר‬ .‫לפיו‬ ‫הקטגוריה‬ ‫והגדרת‬ ‫השלם‬ ‫במספר‬ ‫הראשון‬ ‫המשמעותי‬ ‫הביט‬ ‫מציאת‬‫חיובי‬ ‫)במספר‬ .‫לפיו‬ ‫הקטגוריה‬ ‫והגדרת‬ ‫השלם‬ ‫במספר‬ ‫הראשון‬ ‫המשמעותי‬ ‫הביט‬ ‫מציאת‬
(‫אחד‬ ‫שאינו‬ ‫הראשון‬ ‫הביט‬ ‫השלילי‬ ‫ובביט‬ ‫אפס‬ ‫שאינו‬ ‫הראשון‬ ‫הביט‬(‫אחד‬ ‫שאינו‬ ‫הראשון‬ ‫הביט‬ ‫השלילי‬ ‫ובביט‬ ‫אפס‬ ‫שאינו‬ ‫הראשון‬ ‫הביט‬
-‫ה‬ ‫מציאת‬-‫ה‬ ‫מציאת‬offsetoffset.‫לעיל‬ ‫הוסברה‬.‫לעיל‬ ‫הוסברה‬
‫הוא‬ ‫המידע‬ ‫אם‬ ‫)אלא‬ ‫אפס‬ ‫ערך‬ ‫קליטת‬ ‫בכל‬ ‫האפסים‬ ‫מספר‬ ‫שמירת‬‫הוא‬ ‫המידע‬ ‫אם‬ ‫)אלא‬ ‫אפס‬ ‫ערך‬ ‫קליטת‬ ‫בכל‬ ‫האפסים‬ ‫מספר‬ ‫שמירת‬DCDC((
‫בשלושה‬ ‫פעם‬ ‫נעשית‬ ‫המוצא‬ ‫אות‬ ‫קריאת‬‫בשלושה‬ ‫פעם‬ ‫נעשית‬ ‫המוצא‬ ‫אות‬ ‫קריאת‬cyclescycles‫להישאר‬ ‫חייב‬ ‫במוצא‬ ‫המידע‬ ‫לכן‬ ,‫בלבד‬‫להישאר‬ ‫חייב‬ ‫במוצא‬ ‫המידע‬ ‫לכן‬ ,‫בלבד‬
‫לשלושה‬‫לשלושה‬cyclescycles.‫ייקרא‬ ‫לא‬ ‫כלל‬ ‫במוצא‬ ‫שהמידע‬ ‫ייתכן‬ ‫או‬ ‫כפולה‬ ‫קריאה‬ ‫תיתכן‬ ‫אחרת‬ ‫בדיוק‬.‫ייקרא‬ ‫לא‬ ‫כלל‬ ‫במוצא‬ ‫שהמידע‬ ‫ייתכן‬ ‫או‬ ‫כפולה‬ ‫קריאה‬ ‫תיתכן‬ ‫אחרת‬ ‫בדיוק‬
‫תוך‬ ‫למבוא‬ ‫מידע‬ ‫עוד‬ ‫יגיע‬ ‫שלא‬ ‫יודעים‬ ‫שאנו‬ ‫ומפני‬ ‫כך‬ ‫בעקבות‬‫תוך‬ ‫למבוא‬ ‫מידע‬ ‫עוד‬ ‫יגיע‬ ‫שלא‬ ‫יודעים‬ ‫שאנו‬ ‫ומפני‬ ‫כך‬ ‫בעקבות‬33,,cyclescycles-‫ה‬-‫ה‬flagsflags
)‫השונים‬)‫השונים‬))d_out_valid, spen_out, eobd_out_valid, spen_out, eob‫לשלושה‬ ‫נשמרים‬ ‫עצמו‬ ‫והמידע‬‫לשלושה‬ ‫נשמרים‬ ‫עצמו‬ ‫והמידע‬cyclescycles.‫בדיוק‬.‫בדיוק‬
‫שנבחנו‬ ‫אלטרנטיבות‬‫שנבחנו‬ ‫אלטרנטיבות‬
‫כמה‬ ‫כלל‬ ‫בדרך‬ ‫עוברים‬ ‫מקרה‬ ‫שבכל‬ ‫מכיוון‬ ‫אבל‬ ,‫שעון‬ ‫ללא‬ ‫המודול‬ ‫את‬ ‫ליצור‬ ‫היה‬ ‫אולי‬ ‫ניתן‬‫כמה‬ ‫כלל‬ ‫בדרך‬ ‫עוברים‬ ‫מקרה‬ ‫שבכל‬ ‫מכיוון‬ ‫אבל‬ ,‫שעון‬ ‫ללא‬ ‫המודול‬ ‫את‬ ‫ליצור‬ ‫היה‬ ‫אולי‬ ‫ניתן‬
‫לאחר‬ ‫יציב‬ ‫מידע‬ ‫להציג‬ ‫הצורך‬ ‫בגלל‬ ‫וגם‬ ‫המוצא‬ ‫באותות‬ ‫שמשתמשים‬ ‫עד‬ ‫שעון‬ ‫סיבובי‬‫לאחר‬ ‫יציב‬ ‫מידע‬ ‫להציג‬ ‫הצורך‬ ‫בגלל‬ ‫וגם‬ ‫המוצא‬ ‫באותות‬ ‫שמשתמשים‬ ‫עד‬ ‫שעון‬ ‫סיבובי‬
.‫בלבד‬ ‫אחד‬ ‫שעון‬ ‫סיבוב‬ ‫להוסיף‬ ‫העדפתי‬ ‫קצרה‬ ‫לא‬ ‫לוגיקה‬.‫בלבד‬ ‫אחד‬ ‫שעון‬ ‫סיבוב‬ ‫להוסיף‬ ‫העדפתי‬ ‫קצרה‬ ‫לא‬ ‫לוגיקה‬
‫לערך‬ ‫אחד‬ ‫מקבילים‬ ‫מעגלים‬ ‫שני‬ ‫תוכננו‬ ‫בתחילה‬‫לערך‬ ‫אחד‬ ‫מקבילים‬ ‫מעגלים‬ ‫שני‬ ‫תוכננו‬ ‫בתחילה‬DCDC‫לערכי‬ ‫ואחד‬‫לערכי‬ ‫ואחד‬ACAC‫הקידוד‬ ‫מנגנון‬ ‫אבל‬‫הקידוד‬ ‫מנגנון‬ ‫אבל‬
.‫המתבקשים‬ ‫השינויים‬ ‫עם‬ ‫יחיד‬ ‫במודול‬ ‫שניהם‬ ‫את‬ ‫לעבד‬ ‫העדפתי‬ ‫לכן‬ ,‫דומה‬.‫המתבקשים‬ ‫השינויים‬ ‫עם‬ ‫יחיד‬ ‫במודול‬ ‫שניהם‬ ‫את‬ ‫לעבד‬ ‫העדפתי‬ ‫לכן‬ ,‫דומה‬
FIFOFIFO‫שעון‬ ‫מחזורי‬ ‫כמה‬ ‫לאורך‬ ‫יחיד‬ ‫ערך‬ ‫שמירת‬ ‫אך‬ ,‫לעיל‬ ‫שהוזכר‬ ‫קצה‬ ‫במקרה‬ , ‫במוצא‬‫שעון‬ ‫מחזורי‬ ‫כמה‬ ‫לאורך‬ ‫יחיד‬ ‫ערך‬ ‫שמירת‬ ‫אך‬ ,‫לעיל‬ ‫שהוזכר‬ ‫קצה‬ ‫במקרה‬ , ‫במוצא‬
‫פשוטה‬ ‫יותר‬ ‫בצורה‬ ‫הבעיה‬ ‫את‬ ‫.פותרת‬‫פשוטה‬ ‫יותר‬ ‫בצורה‬ ‫הבעיה‬ ‫את‬ ‫.פותרת‬
102
Jpeg encoder
Jpeg encoder
Jpeg encoder
Jpeg encoder
Jpeg encoder
Jpeg encoder
Jpeg encoder
Jpeg encoder
Jpeg encoder
Jpeg encoder
Jpeg encoder
Jpeg encoder
Jpeg encoder
Jpeg encoder
Jpeg encoder
Jpeg encoder
Jpeg encoder
Jpeg encoder
Jpeg encoder
Jpeg encoder
Jpeg encoder
Jpeg encoder
Jpeg encoder
Jpeg encoder
Jpeg encoder
Jpeg encoder
Jpeg encoder
Jpeg encoder
Jpeg encoder
Jpeg encoder
Jpeg encoder
Jpeg encoder
Jpeg encoder
Jpeg encoder
Jpeg encoder
Jpeg encoder
Jpeg encoder
Jpeg encoder
Jpeg encoder
Jpeg encoder
Jpeg encoder
Jpeg encoder
Jpeg encoder
Jpeg encoder
Jpeg encoder
Jpeg encoder
Jpeg encoder
Jpeg encoder
Jpeg encoder
Jpeg encoder
Jpeg encoder
Jpeg encoder
Jpeg encoder
Jpeg encoder
Jpeg encoder
Jpeg encoder

More Related Content

Similar to Jpeg encoder

Fire Wall Solutions Final
Fire Wall Solutions FinalFire Wall Solutions Final
Fire Wall Solutions Finalhaimkarel
 
מודל שבעת השכבות
מודל שבעת השכבותמודל שבעת השכבות
מודל שבעת השכבותhaimkarel
 
מבוא לקריפטוגרפיה
מבוא לקריפטוגרפיהמבוא לקריפטוגרפיה
מבוא לקריפטוגרפיהOfek Shilon
 
מהי אנליזה סטטית?
מהי אנליזה סטטית?מהי אנליזה סטטית?
מהי אנליזה סטטית?TrinitySB
 
BizzMapper
BizzMapperBizzMapper
BizzMapperelijaelt
 
Dw124 3-kernel so-injector
Dw124 3-kernel so-injectorDw124 3-kernel so-injector
Dw124 3-kernel so-injectorAdirMakmel
 
מודל Osi -tcpip
מודל Osi  -tcpipמודל Osi  -tcpip
מודל Osi -tcpiphaimkarel
 
SAP NetWeaver Gateway OData
SAP NetWeaver Gateway ODataSAP NetWeaver Gateway OData
SAP NetWeaver Gateway ODataDaniel Cnaan
 
מושגים שונים בהבנת מערכות מחשב
מושגים שונים בהבנת מערכות מחשבמושגים שונים בהבנת מערכות מחשב
מושגים שונים בהבנת מערכות מחשבhaimkarel
 
מושגים שונים בהבנת מערכות מחשב
מושגים שונים בהבנת מערכות מחשבמושגים שונים בהבנת מערכות מחשב
מושגים שונים בהבנת מערכות מחשבhaimkarel
 
מהפיכת הייצור החכם - אריאל לסרי (Rockwell Automation)
מהפיכת הייצור החכם - אריאל לסרי (Rockwell Automation)מהפיכת הייצור החכם - אריאל לסרי (Rockwell Automation)
מהפיכת הייצור החכם - אריאל לסרי (Rockwell Automation)tchanim
 
217188253 vdi-case-final-2010
217188253 vdi-case-final-2010217188253 vdi-case-final-2010
217188253 vdi-case-final-2010Inbalraanan
 
varda_schley_resume_heb2
varda_schley_resume_heb2varda_schley_resume_heb2
varda_schley_resume_heb2Schley Varda
 
הכרת המחשב האישי מצויין
הכרת המחשב האישי   מצוייןהכרת המחשב האישי   מצויין
הכרת המחשב האישי מצוייןhaimkarel
 

Similar to Jpeg encoder (19)

Fire Wall Solutions Final
Fire Wall Solutions FinalFire Wall Solutions Final
Fire Wall Solutions Final
 
מודל שבעת השכבות
מודל שבעת השכבותמודל שבעת השכבות
מודל שבעת השכבות
 
מבוא לקריפטוגרפיה
מבוא לקריפטוגרפיהמבוא לקריפטוגרפיה
מבוא לקריפטוגרפיה
 
מהי אנליזה סטטית?
מהי אנליזה סטטית?מהי אנליזה סטטית?
מהי אנליזה סטטית?
 
BizzMapper
BizzMapperBizzMapper
BizzMapper
 
Dw124 3-kernel so-injector
Dw124 3-kernel so-injectorDw124 3-kernel so-injector
Dw124 3-kernel so-injector
 
SAP NetWeaver Gateway OData
SAP NetWeaver Gateway ODataSAP NetWeaver Gateway OData
SAP NetWeaver Gateway OData
 
מודל Osi -tcpip
מודל Osi  -tcpipמודל Osi  -tcpip
מודל Osi -tcpip
 
SAP NetWeaver Gateway OData
SAP NetWeaver Gateway ODataSAP NetWeaver Gateway OData
SAP NetWeaver Gateway OData
 
PHP Scalability
PHP ScalabilityPHP Scalability
PHP Scalability
 
מושגים שונים בהבנת מערכות מחשב
מושגים שונים בהבנת מערכות מחשבמושגים שונים בהבנת מערכות מחשב
מושגים שונים בהבנת מערכות מחשב
 
מושגים שונים בהבנת מערכות מחשב
מושגים שונים בהבנת מערכות מחשבמושגים שונים בהבנת מערכות מחשב
מושגים שונים בהבנת מערכות מחשב
 
ההה מבחן
ההה   מבחןההה   מבחן
ההה מבחן
 
מהפיכת הייצור החכם - אריאל לסרי (Rockwell Automation)
מהפיכת הייצור החכם - אריאל לסרי (Rockwell Automation)מהפיכת הייצור החכם - אריאל לסרי (Rockwell Automation)
מהפיכת הייצור החכם - אריאל לסרי (Rockwell Automation)
 
stage3D
stage3Dstage3D
stage3D
 
217188253 vdi-case-final-2010
217188253 vdi-case-final-2010217188253 vdi-case-final-2010
217188253 vdi-case-final-2010
 
Genaral Configuration 8600 Nortel
Genaral Configuration 8600 NortelGenaral Configuration 8600 Nortel
Genaral Configuration 8600 Nortel
 
varda_schley_resume_heb2
varda_schley_resume_heb2varda_schley_resume_heb2
varda_schley_resume_heb2
 
הכרת המחשב האישי מצויין
הכרת המחשב האישי   מצוייןהכרת המחשב האישי   מצויין
הכרת המחשב האישי מצויין
 

Jpeg encoder

  • 1. Jpeg encoderJpeg encoder Hardware implementationHardware implementation with Verilogwith Verilog Designed byDesigned by Alon Cohen (alonc777@gmail.comAlon Cohen (alonc777@gmail.com(( Roi Biton, Yevgeny (Yoni) KhasinRoi Biton, Yevgeny (Yoni) Khasin Ariela Huber, Shulamyt Ajamy, Moshe SzklarAriela Huber, Shulamyt Ajamy, Moshe Szklar Directed byDirected by Mr. Max NigriMr. Max Nigri The Hebrew UniversityThe Hebrew University of Jerusalemof Jerusalem 1
  • 2. The projectThe project imagerimager JPEG JPEGEncoder Encoder JPEG File RGB Data SD CARDSD CARD ))flashflash((Eye-On-Si® Ultra-compact CMOS Digital Camera Module example Jpeg encoder for digital cameraJpeg encoder for digital camera example 2
  • 4. imagerimager ‫מ‬ ‫מידע‬ ‫הזרמת‬ ‫המדמה‬ ‫מודול‬‫מ‬ ‫מידע‬ ‫הזרמת‬ ‫המדמה‬ ‫מודול‬imagerimager Data FormatData Format :: 8bit RGB8bit RGB‫מקבילי‬ ‫סינכרוני‬‫מקבילי‬ ‫סינכרוני‬ ‫כניסה‬ ‫רגל‬‫כניסה‬ ‫רגל‬shootshoot.‫חדשה‬ ‫תמונה‬ ‫לשליחת‬ ‫טריגר‬ –.‫חדשה‬ ‫תמונה‬ ‫לשליחת‬ ‫טריגר‬ – ‫נשלח‬ ‫תמונה‬ ‫כל‬ ‫העברת‬ ‫לפני‬‫נשלח‬ ‫תמונה‬ ‫כל‬ ‫העברת‬ ‫לפני‬headerheader‫שם‬ ‫את‬ ‫המעביר‬‫שם‬ ‫את‬ ‫המעביר‬ .‫התמונה‬ ‫וממדי‬ ‫הקובץ‬.‫התמונה‬ ‫וממדי‬ ‫הקובץ‬ 4
  • 5. playerplayer .‫תמונה‬ ‫לצילום‬ ‫כפתור‬ ‫לחיצת‬ ‫מיצר‬.‫תמונה‬ ‫לצילום‬ ‫כפתור‬ ‫לחיצת‬ ‫מיצר‬ ‫בקוד‬ ‫תאריך‬ ‫מיצר‬‫בקוד‬ ‫תאריך‬ ‫מיצר‬ASCIIASCII.. : ‫התמונה‬ ‫איכות‬ ‫את‬ ‫קובע‬: ‫התמונה‬ ‫איכות‬ ‫את‬ ‫קובע‬quality factorquality factor 00––lowlow 11--midmid 22--highhigh 5
  • 6. flashflash .‫זיכרון‬ ‫כרטיס‬ ‫המדמה‬ ‫מודול‬.‫זיכרון‬ ‫כרטיס‬ ‫המדמה‬ ‫מודול‬ ‫סינכרונית‬ ‫מקבילית‬ ‫תקשורת‬‫סינכרונית‬ ‫מקבילית‬ ‫תקשורת‬32bit32bit.. ‫של‬ ‫לכתיבה‬ ‫אפשרות‬‫של‬ ‫לכתיבה‬ ‫אפשרות‬8,16,24,328,16,24,32BitBit‫עלית‬ ‫בכל‬‫עלית‬ ‫בכל‬ .‫שעון‬.‫שעון‬ ‫העברת‬ ‫לפני‬ ‫מתבצעת‬ ‫הקובץ‬ ‫שם‬ ‫העברת‬‫העברת‬ ‫לפני‬ ‫מתבצעת‬ ‫הקובץ‬ ‫שם‬ ‫העברת‬ .‫המידע‬.‫המידע‬ 6
  • 7. encoderencoder ‫לפורמט‬ ‫תמונה‬ ‫מקודד‬‫לפורמט‬ ‫תמונה‬ ‫מקודד‬jpg filejpg file.. ‫בפורמט‬ ‫תמונה‬ :‫כניסה‬‫בפורמט‬ ‫תמונה‬ :‫כניסה‬RGBRGB) ‫טורי‬ ‫באופן‬ ,) ‫טורי‬ ‫באופן‬ ,datadata 8bit8bit.(.( ‫סינכרונית‬ ‫כתיבה‬ :‫מוצא‬‫סינכרונית‬ ‫כתיבה‬ :‫מוצא‬32bit data32bit data‫לזיכרון‬‫לזיכרון‬flashflash.. :‫בקרות‬:‫בקרות‬ Quality factorQuality factor–‫איכות‬ ‫לקביעת‬ ‫ביטים‬ ‫שני‬–‫איכות‬ ‫לקביעת‬ ‫ביטים‬ ‫שני‬ ‫.התמונה‬‫.התמונה‬ Date(64bitDate(64bit))–‫בקוד‬ ‫תאריך‬ ‫הכנסת‬–‫בקוד‬ ‫תאריך‬ ‫הכנסת‬ASCIIASCII.. ShootShoot‫תמונה‬ ‫לצילום‬ ‫.טריגר‬‫תמונה‬ ‫לצילום‬ ‫.טריגר‬ JPEG JPEGEncoder Encoder 7
  • 8. EncoderEncoder Block diagram & conceptBlock diagram & concept 8
  • 9. Encoder Block diagramEncoder Block diagram QuantizationQuantization DCTDCT && ZIGZAGZIGZAG RLCRLC && DPCMDPCM DCTDCT ClientClient TripleTriple FIFOFIFO ControlControl RGB toRGB to YCbCrYCbCr ARBARB RAMRAM BlocksBlocks Wr PixelsWr Pixels ClientClient DateDate StamperStamper AlinerAlinerInt to floatInt to float Clk dividerClk divider Quan ROMQuan ROM TBTB FIFOFIFO writerwriter HuffmanHuffman codecode Serial toSerial to paralelparalel FlashFlash writerwriter DCTDCT ROMROM 9
  • 10. ‫מודולים‬ ‫בין‬ ‫תקשורת‬‫מודולים‬ ‫בין‬ ‫תקשורת‬ ‫השונים‬ ‫המודולים‬ ‫בין‬ ‫המידע‬ ‫להעברת‬ ‫אחיד‬ ‫תקן‬‫השונים‬ ‫המודולים‬ ‫בין‬ ‫המידע‬ ‫להעברת‬ ‫אחיד‬ ‫תקן‬ spen_in/spen_outspen_in/spen_out–' ‫ב‬ ‫נמצא‬–' ‫ב‬ ‫נמצא‬11‫בלוקתמונה‬ ‫מועבר‬ ‫עוד‬ ‫כל‬ '.‫בלוקתמונה‬ ‫מועבר‬ ‫עוד‬ ‫כל‬ '. d_in_valid/d_out_validd_in_valid/d_out_valid–'1–'1' ‫הנוכחית‬ ‫השעון‬ ‫עלית‬ ‫עבור‬ ‫תקף‬ ‫מידע‬ ‫.מציין‬' ‫הנוכחית‬ ‫השעון‬ ‫עלית‬ ‫עבור‬ ‫תקף‬ ‫מידע‬ ‫.מציין‬ rstrst–‫המודול‬ ‫.אתחול‬–‫המודול‬ ‫.אתחול‬ mclkmclk–‫המודול‬ ‫של‬ ‫עבודה‬ ‫.שעון‬–‫המודול‬ ‫של‬ ‫עבודה‬ ‫.שעון‬ ‫בלוק‬ ‫תחילת‬ ‫בלוק‬ ‫סוף‬‫תקף‬ ‫מידע‬ 10
  • 11. ‫ברצף‬ ‫תמונות‬ ‫צילום‬‫ברצף‬ ‫תמונות‬ ‫צילום‬ Shoot‫תמונה‬ ‫לצילום‬ ‫חדשה‬ Busy‫ה‬ ‫כי‬ ‫מציין‬ encoder‫באמצע‬ ‫עבודה‬ ‫ה‬ ‫בכניסת‬ ‫הבלוקים‬ DCT ‫קובץ‬ ‫סיום‬ ‫נלחץ‬ ‫לא‬shoot ‫מועברת‬ ‫תמונה‬ ‫אין‬ pxq‫בזמן‬ ‫דלוק‬ ‫המידע‬ ‫העברת‬ 11
  • 12. Block diagram – data flowBlock diagram – data flow ‫מה‬ ‫המידע‬ ‫כניסת‬ ,‫שמאל‬ ‫מצד‬‫מה‬ ‫המידע‬ ‫כניסת‬ ,‫שמאל‬ ‫מצד‬imagerimager.. Int to floatInt to float– ‫מ‬ ‫המידע‬ ‫את‬ ‫ממיר‬– ‫מ‬ ‫המידע‬ ‫את‬ ‫ממיר‬8bit data8bit data‫ל‬‫ל‬floating point 24floating point 24 bitbit.. AlinerAliner‫טורי‬ ‫מקבל‬‫טורי‬ ‫מקבל‬R,G,BR,G,B‫שלשה‬ ‫ומוציא‬‫שלשה‬ ‫ומוציא‬}}R,G,BR,G,B{{‫כל‬ ‫מיושרים‬‫כל‬ ‫מיושרים‬33 ‫.שעונים‬‫.שעונים‬ 12
  • 13. Block diagram – data flowBlock diagram – data flow Date stamperDate stamper‫של‬ ‫הדפסה‬ ‫מבצע‬‫של‬ ‫הדפסה‬ ‫מבצע‬ ‫כדי‬ ‫תוך‬ ‫התמונה‬ ‫לתוך‬ ‫תאריך‬‫כדי‬ ‫תוך‬ ‫התמונה‬ ‫לתוך‬ ‫תאריך‬ ‫המידע‬ ‫.זרימת‬‫המידע‬ ‫.זרימת‬ ‫למודול‬ ‫מחוץ‬ ‫מתקבל‬ ‫התאריך‬‫למודול‬ ‫מחוץ‬ ‫מתקבל‬ ‫התאריך‬ ‫בפורמט‬‫בפורמט‬ASCIIASCII‫של‬ ‫מקבילי‬ ‫קו‬ ‫ע"י‬‫של‬ ‫מקבילי‬ ‫קו‬ ‫ע"י‬ 64bit64bit.. ‫מתיחה‬ ‫לבצע‬ ‫פרמטרים‬ ‫ע"י‬ ‫נתן‬‫מתיחה‬ ‫לבצע‬ ‫פרמטרים‬ ‫ע"י‬ ‫נתן‬ .‫לתאריך‬ ‫ורוחבי‬ ‫אופקי‬ ‫וכיווץ‬.‫לתאריך‬ ‫ורוחבי‬ ‫אופקי‬ ‫וכיווץ‬ ‫ה‬ ‫כל‬ ‫את‬ ‫להדפיס‬ ‫נתן‬‫ה‬ ‫כל‬ ‫את‬ ‫להדפיס‬ ‫נתן‬A,B,CA,B,C 13
  • 14. Block diagram – data flowBlock diagram – data flow RGBtoYCbCrRGBtoYCbCr– ‫לפורמט‬ ‫המרה‬ ‫המבצע‬ ‫מודול‬– ‫לפורמט‬ ‫המרה‬ ‫המבצע‬ ‫מודול‬Y,Cb,CrY,Cb,Cr‫ו‬‫ו‬offsetoffset‫של‬‫של‬--128128‫הכפלה‬ ‫ע"י‬‫הכפלה‬ ‫ע"י‬ ‫.במטריצה‬‫.במטריצה‬ Wr Pixel ClientWr Pixel Client‫לזיכרון‬ ‫שורה‬ ‫אחר‬ ‫שורה‬ ‫המידע‬ ‫של‬ ‫כתיבה‬ ‫מבצע‬‫לזיכרון‬ ‫שורה‬ ‫אחר‬ ‫שורה‬ ‫המידע‬ ‫של‬ ‫כתיבה‬ ‫מבצע‬RAMRAM‫ציקלית‬ ‫בצורה‬‫ציקלית‬ ‫בצורה‬ ‫פולס‬ ‫ומייצר‬‫פולס‬ ‫ומייצר‬startstart‫של‬ ‫כתיבה‬ ‫סיום‬ ‫כל‬ ‫עם‬‫של‬ ‫כתיבה‬ ‫סיום‬ ‫כל‬ ‫עם‬88‫שורות‬ .‫שורות‬ . ‫כל‬ ‫של‬ ‫ההתחלתית‬ ‫הכתובת‬ ‫את‬ ‫מספק‬ ‫בנוסף‬‫כל‬ ‫של‬ ‫ההתחלתית‬ ‫הכתובת‬ ‫את‬ ‫מספק‬ ‫בנוסף‬88‫כל‬ ‫עם‬ ‫שורות‬‫כל‬ ‫עם‬ ‫שורות‬startstart.‫סנכרון‬ ‫לצורך‬.‫סנכרון‬ ‫לצורך‬ To ARBTo ARB14
  • 15. Block diagram – data flowBlock diagram – data flow RAM BlocksRAM Blocks– ‫מ‬ ‫המגיעה‬ ‫התמונה‬ ‫של‬ ‫המידע‬ ‫שורות‬ ‫את‬ ‫מאחסן‬ –– ‫מ‬ ‫המגיעה‬ ‫התמונה‬ ‫של‬ ‫המידע‬ ‫שורות‬ ‫את‬ ‫מאחסן‬ –wr pixels clientwr pixels client.. ARBARB– ‫ל‬ ‫ארביטרציה‬– ‫ל‬ ‫ארביטרציה‬RAMRAM‫עם‬‫עם‬strict prioritystrict priority‫ל‬‫ל‬wr pixels clientwr pixels client.. DCT ClientDCT Client– ‫מה‬ ‫המידע‬ ‫רצועות‬ ‫את‬ ‫מושך‬– ‫מה‬ ‫המידע‬ ‫רצועות‬ ‫את‬ ‫מושך‬RAMRAM‫של‬ ‫בפורמט‬‫של‬ ‫בפורמט‬blocks 8x8blocks 8x8 ‫המידע‬ ‫משיכת‬ ‫סדר‬‫המידע‬ ‫משיכת‬ ‫סדר‬top to down and left to righttop to down and left to right.. ‫וסגנל‬ ‫התחלתית‬ ‫כתובת‬ ‫מקבל‬‫וסגנל‬ ‫התחלתית‬ ‫כתובת‬ ‫מקבל‬startstart.‫הקריאה‬ ‫וזמן‬ ‫כתובת‬ ‫לסימון‬.‫הקריאה‬ ‫וזמן‬ ‫כתובת‬ ‫לסימון‬ From wrFrom wr pixels clientpixels client To DCTTo DCT 15
  • 16. Block diagram – data flowBlock diagram – data flow ‫ביצוע‬‫ביצוע‬DCTDCT‫על‬ ‫במקביל‬‫על‬ ‫במקביל‬Y,Cb,CrY,Cb,Cr.. ‫מימין‬ ‫מקדמים‬ ‫במטריצת‬ ‫הכפלה‬ ‫ע"י‬ ‫ביצוע‬‫מימין‬ ‫מקדמים‬ ‫במטריצת‬ ‫הכפלה‬ ‫ע"י‬ ‫ביצוע‬ ‫בזיכרון‬ ‫השמורה‬ ‫ומשמאל‬‫בזיכרון‬ ‫השמורה‬ ‫ומשמאל‬ROMROM‫חיצוני‬‫חיצוני‬ .‫המודולים‬ ‫לשלושת‬.‫המודולים‬ ‫לשלושת‬ BlockBlock 16
  • 17. Block diagram – data flowBlock diagram – data flow ‫ביצוע‬‫ביצוע‬QuantizationQuantization‫על‬ ‫במקביל‬‫על‬ ‫במקביל‬Y,Cb,CrY,Cb,Cr.. ‫איכויות‬ ‫שלושה‬ ‫עבור‬ ‫הקוונטיזציה‬ ‫טבלאות‬‫איכויות‬ ‫שלושה‬ ‫עבור‬ ‫הקוונטיזציה‬ ‫טבלאות‬ ‫ב‬ ‫שמורות‬‫ב‬ ‫שמורות‬ROMROM‫ה‬ ‫למודולי‬ ‫חיצוני‬‫ה‬ ‫למודולי‬ ‫חיצוני‬ QuantizationQuantization.. ‫מודול‬‫מודול‬quan_table_swquan_table_sw‫מוסיף‬‫מוסיף‬offsetoffset‫מתאים‬‫מתאים‬ ‫ב‬ ‫לכתובת‬‫ב‬ ‫לכתובת‬ROMROM‫ל‬ ‫בהתאם‬‫ל‬ ‫בהתאם‬2bit quality factor2bit quality factor ‫למודול‬ ‫מחוץ‬ ‫המגיע‬‫למודול‬ ‫מחוץ‬ ‫המגיע‬encoderencoder.. ‫טבלאות‬‫טבלאות‬chrom & lumchrom & lum‫שע"י‬ ‫כך‬ ‫לאורך‬ ‫שמורות‬‫שע"י‬ ‫כך‬ ‫לאורך‬ ‫שמורות‬ ‫ה‬ ‫במוצא‬ ‫מתאים‬ ‫חיווט‬‫ה‬ ‫במוצא‬ ‫מתאים‬ ‫חיווט‬ROMROM‫מודול‬ ‫כל‬‫מודול‬ ‫כל‬quanquan .‫לו‬ ‫המתאים‬ ‫המידע‬ ‫את‬ ‫מקבל‬.‫לו‬ ‫המתאים‬ ‫המידע‬ ‫את‬ ‫מקבל‬ 17
  • 18. Quality factorQuality factor ‫היא‬ ‫הקוונטיזציה‬ ‫פעולת‬‫היא‬ ‫הקוונטיזציה‬ ‫פעולת‬ ‫הקוונטיזציה‬ ‫בטבלת‬ ‫הכפלה‬‫הקוונטיזציה‬ ‫בטבלת‬ ‫הכפלה‬ .‫התוצאה‬ ‫ועיגול‬.‫התוצאה‬ ‫ועיגול‬ ‫שלושה‬ ‫בין‬ ‫השוואה‬ ‫להלן‬‫שלושה‬ ‫בין‬ ‫השוואה‬ ‫להלן‬ :‫שונות‬ ‫איכויות‬:‫שונות‬ ‫איכויות‬ Medium(8k) Value/(0.5*table) Low(5.45k) value/table High(11.5k) Value/(0.25*table) Bmp(54k) 18
  • 19. Block diagram – data flowBlock diagram – data flow RLERLE -- Run Length EncodeRun Length Encode DPCMDPCM -- Differential Pulse CodeDifferential Pulse Code ModulationModulation ‫האפליקציות‬ ‫שני‬ ‫את‬ ‫המממש‬ ‫מודול‬‫האפליקציות‬ ‫שני‬ ‫את‬ ‫המממש‬ ‫מודול‬ RLE & DPCMRLE & DPCM.. ‫המבצע‬ ‫למודול‬ ‫מתחברים‬ ‫מוצאים‬‫המבצע‬ ‫למודול‬ ‫מתחברים‬ ‫מוצאים‬ ‫ל‬ ‫כתיבה‬‫ל‬ ‫כתיבה‬FIFOFIFO ‫במוצא‬ ‫המידע‬ ‫כמות‬ ‫כי‬ ‫לראות‬ ‫ניתן‬‫במוצא‬ ‫המידע‬ ‫כמות‬ ‫כי‬ ‫לראות‬ ‫ניתן‬ ‫המידע‬ ‫מכמות‬ ‫בהרבה‬ ‫קטנה‬‫המידע‬ ‫מכמות‬ ‫בהרבה‬ ‫קטנה‬ .‫בכניסה‬.‫בכניסה‬ BlockBlock 19
  • 20. Block diagram – data flowBlock diagram – data flow FIFO WriterFIFO Writer ‫ערוצי‬ ‫שלושת‬ ‫את‬ ‫מקבל‬‫ערוצי‬ ‫שלושת‬ ‫את‬ ‫מקבל‬ ‫ריבוב‬ ‫ומבצע‬ ‫המידע‬‫ריבוב‬ ‫ומבצע‬ ‫המידע‬ ‫ל‬ ‫וכתיבה‬ ‫שלהם‬‫ל‬ ‫וכתיבה‬ ‫שלהם‬tripletriple fifofifo.. Super FIFOSuper FIFO ‫סקטורים‬ ‫שלושה‬ ‫מכיל‬ –‫סקטורים‬ ‫שלושה‬ ‫מכיל‬ – ‫על‬ ‫הממומשים‬ ‫זיכרון‬ ‫של‬‫על‬ ‫הממומשים‬ ‫זיכרון‬ ‫של‬ ‫גבי‬‫גבי‬RAMRAM.‫אחד‬.‫אחד‬ ‫שלם‬ ‫בלוק‬ ‫מגיע‬ ‫כאשר‬‫שלם‬ ‫בלוק‬ ‫מגיע‬ ‫כאשר‬ ‫במוצא‬ ‫יוצאים‬ ‫הבלוקים‬‫במוצא‬ ‫יוצאים‬ ‫הבלוקים‬ ‫בהתאם‬ ‫השני‬ ‫אחרי‬ ‫אחד‬‫בהתאם‬ ‫השני‬ ‫אחרי‬ ‫אחד‬ .‫קריאה‬ ‫לבקשת‬.‫קריאה‬ ‫לבקשת‬ ‫בלוק‬ ‫וסוף‬ ‫תחילה‬ ‫סימון‬‫בלוק‬ ‫וסוף‬ ‫תחילה‬ ‫סימון‬ ‫ביטים‬ ‫שני‬ ‫ע"י‬ ‫מתבצעים‬‫ביטים‬ ‫שני‬ ‫ע"י‬ ‫מתבצעים‬ ‫חלק‬ ‫שהם‬ ‫ראשונים‬‫חלק‬ ‫שהם‬ ‫ראשונים‬ .‫המידע‬ ‫מרגיסטרי‬.‫המידע‬ ‫מרגיסטרי‬ ‫שכמות‬ ‫לראות‬ ‫ניתן‬‫שכמות‬ ‫לראות‬ ‫ניתן‬ ‫אחד‬ ‫בכל‬ ‫שונה‬ ‫המידע‬‫אחד‬ ‫בכל‬ ‫שונה‬ ‫המידע‬ ‫מהמסלולים‬‫מהמסלולים‬ 20
  • 21. Block diagram – data flowBlock diagram – data flow ‫ב‬ ‫השמורות‬ ‫טבלאות‬ ‫ע"י‬ ‫המידע‬ ‫של‬ ‫הופמן‬ ‫קידוד‬‫ב‬ ‫השמורות‬ ‫טבלאות‬ ‫ע"י‬ ‫המידע‬ ‫של‬ ‫הופמן‬ ‫קידוד‬ROMROM‫ביטים‬ ‫עם‬ ‫המקודד‬ ‫המידע‬ ‫של‬ ‫והוצאה‬‫ביטים‬ ‫עם‬ ‫המקודד‬ ‫המידע‬ ‫של‬ ‫והוצאה‬ .‫הרלוונטי‬ ‫המידע‬ ‫אורך‬ ‫לציון‬.‫הרלוונטי‬ ‫המידע‬ ‫אורך‬ ‫לציון‬ Serial to paralelSerial to paralel– ‫אחיד‬ ‫באורך‬ ‫מידע‬ ‫ומוציא‬ ‫השונים‬ ‫באורכים‬ ‫הביטים‬ ‫את‬ ‫טורית‬ ‫בצורה‬ ‫אוסף‬– ‫אחיד‬ ‫באורך‬ ‫מידע‬ ‫ומוציא‬ ‫השונים‬ ‫באורכים‬ ‫הביטים‬ ‫את‬ ‫טורית‬ ‫בצורה‬ ‫אוסף‬ ‫של‬‫של‬32bit32bit‫ל‬ ‫לכתיבה‬‫ל‬ ‫לכתיבה‬flashflash 21
  • 22. Block diagram – data flowBlock diagram – data flow Flash writerFlash writer– ‫ו‬ ‫הקובץ‬ ‫שם‬ ‫של‬ ‫וכתיבה‬ ‫יצור‬– ‫ו‬ ‫הקובץ‬ ‫שם‬ ‫של‬ ‫וכתיבה‬ ‫יצור‬headerheader‫ל‬‫ל‬jpeg filejpeg file.. ‫מה‬ ‫המגיע‬ ‫המידע‬ ‫כתיבת‬‫מה‬ ‫המגיע‬ ‫המידע‬ ‫כתיבת‬serial to paralelserial to paralel.‫בקובץ‬ ‫המתאים‬ ‫למקום‬.‫בקובץ‬ ‫המתאים‬ ‫למקום‬ 22
  • 23. ROM & RAM CalculationROM & RAM Calculation Date Stamper ROMDate Stamper ROM 255255‫תווי‬‫תווי‬ASCIIASCII‫תו‬ ‫כל‬ ,‫תו‬ ‫כל‬ ,5x5bit5x5bit 255255**55**5/85/8==797byte797byte :‫מבנה‬:‫מבנה‬5bit x 1275 rows5bit x 1275 rows 11bit address11bit address RAM BlocksRAM Blocks ‫מה‬ ‫דרישה‬‫מה‬ ‫דרישה‬DCTDCT‫כל‬ ‫בין‬ ‫לרווח‬‫כל‬ ‫בין‬ ‫לרווח‬data_validdata_valid:‫במוצא‬:‫במוצא‬88cyclescycles ‫מה‬ ‫דרישה‬‫מה‬ ‫דרישה‬DCTDCT‫הבלוקים‬ ‫בין‬ ‫מחזורים‬ '‫למס‬‫הבלוקים‬ ‫בין‬ ‫מחזורים‬ '‫למס‬627627 ‫בלוק‬ ‫במעבר‬ ‫מחזורים‬ '‫מס‬‫בלוק‬ ‫במעבר‬ ‫מחזורים‬ '‫מס‬6666**88==528528 :‫בלוקים‬ ‫בין‬ ‫השהייה‬ ‫כלל‬ ‫לבלוק‬ ‫דרושים‬ ‫מחזורים‬ ‫סה"כ‬:‫בלוקים‬ ‫בין‬ ‫השהייה‬ ‫כלל‬ ‫לבלוק‬ ‫דרושים‬ ‫מחזורים‬ ‫סה"כ‬11551155 ‫באורך‬ ‫רצועה‬ ‫לפינויי‬ ‫שעון‬ ‫מחזורי‬ ‫סה"כ‬‫באורך‬ ‫רצועה‬ ‫לפינויי‬ ‫שעון‬ ‫מחזורי‬ ‫סה"כ‬10241024::11551155)*)*1024/81024/8=(=(147840147840 :‫זה‬ ‫בזמן‬ ‫שיכתבו‬ ‫זיכרון‬ ‫שורות‬ ‫סה"כ‬:‫זה‬ ‫בזמן‬ ‫שיכתבו‬ ‫זיכרון‬ ‫שורות‬ ‫סה"כ‬147840/8/3147840/8/3==61606160 : ‫שדרושות‬ ‫זיכרון‬ ‫שורות‬ '‫מס‬ ‫סה"כ‬: ‫שדרושות‬ ‫זיכרון‬ ‫שורות‬ '‫מס‬ ‫סה"כ‬1024pix*8+6160=143521024pix*8+6160=14352 ‫הוא‬ ‫הדרוש‬ ‫הזיכרון‬ ‫גודל‬ ‫לכן‬‫הוא‬ ‫הדרוש‬ ‫הזיכרון‬ ‫גודל‬ ‫לכן‬14352rows*72bit =14352rows*72bit = 126kb126kb 14bit address14bit address 23
  • 24. ROM & RAM CalculationROM & RAM Calculation DCT ROM – commonDCT ROM – common .‫ההמרה‬ ‫לביצוע‬ ‫המטריצה‬ ‫להחזקת‬ ‫משמש‬.‫ההמרה‬ ‫לביצוע‬ ‫המטריצה‬ ‫להחזקת‬ ‫משמש‬ 6464value of 24bit floating pointvalue of 24bit floating point Size = 64*24/8 =Size = 64*24/8 = 192byte192byte 66bit addressbit address DCT RAMDCT RAM .‫ראשונה‬ ‫הכפלה‬ ‫לאחר‬ ‫המתקבלת‬ ‫המטריצה‬ ‫לשמירת‬ ‫משמש‬.‫ראשונה‬ ‫הכפלה‬ ‫לאחר‬ ‫המתקבלת‬ ‫המטריצה‬ ‫לשמירת‬ ‫משמש‬ 6464value of 24bit floating pointvalue of 24bit floating point Size = 64*24/8 =Size = 64*24/8 = 192byte192byte 66bit addressbit address 24
  • 25. ROM & RAM CalculationROM & RAM Calculation Quantization ROM – commonQuantization ROM – common ) ‫זוגות‬ ‫שלושה‬ ‫להחזקת‬ ‫משמש‬) ‫זוגות‬ ‫שלושה‬ ‫להחזקת‬ ‫משמש‬luma & chromeluma & chrome‫איכות‬ ‫דרגות‬ ‫שלושה‬ ‫עבור‬ ‫קבועים‬ ‫מטריצות‬ (‫איכות‬ ‫דרגות‬ ‫שלושה‬ ‫עבור‬ ‫קבועים‬ ‫מטריצות‬ ( .‫לתמונה‬.‫לתמונה‬ 6464**33==192192rows of 2*24bit floating pointrows of 2*24bit floating point Size = 64*3*2*24/8 =Size = 64*3*2*24/8 = 1152byte1152byte 88bit addressbit address Super FIFO Dual port RAMSuper FIFO Dual port RAM ‫המסלולים‬ ‫שלושת‬ ‫של‬ ‫המידע‬ ‫לשמירת‬ ‫משמש‬‫המסלולים‬ ‫שלושת‬ ‫של‬ ‫המידע‬ ‫לשמירת‬ ‫משמש‬Y,Cb,CrY,Cb,Cr‫גם‬ ‫מאפשר‬ .‫מחדש‬ ‫שלהם‬ ‫איחוד‬ ‫לצורך‬‫גם‬ ‫מאפשר‬ .‫מחדש‬ ‫שלהם‬ ‫איחוד‬ ‫לצורך‬ ‫ל‬ ‫הכתיבה‬ ‫פעולת‬ ‫של‬ ‫השהייה‬‫ל‬ ‫הכתיבה‬ ‫פעולת‬ ‫של‬ ‫השהייה‬FlashFlash.. ‫מה‬ ‫מקסימאלית‬ ‫השהייה‬‫מה‬ ‫מקסימאלית‬ ‫השהייה‬flashflash‫ל‬ ‫מותאמת‬‫ל‬ ‫מותאמת‬80cycles80cycles‫של‬ ‫תוספת‬ ‫דרושה‬ ‫לכן‬‫של‬ ‫תוספת‬ ‫דרושה‬ ‫לכן‬ 80/880/8==1010rows per sectorrows per sector ‫ל‬ ‫בנוסף‬‫ל‬ ‫בנוסף‬Cb, CrCb, Cr‫עוד‬ ‫דרושים‬‫עוד‬ ‫דרושים‬6464**22==128128rowsrows‫ועוד‬‫ועוד‬22rowsrows‫ל‬‫ל‬YY :‫סה"כ‬:‫סה"כ‬1010**3+643+64**2+22+2==160160 159159rows * 21bit =rows * 21bit = 420byte420byte 8bit address8bit address 25
  • 26. ROM & RAM CalculationROM & RAM Calculation Huffman table ROMHuffman table ROM ‫הופמן‬ ‫קידוד‬ ‫לביצוע‬ ‫הערכים‬ ‫טבלת‬ ‫את‬ ‫מחזיק‬‫הופמן‬ ‫קידוד‬ ‫לביצוע‬ ‫הערכים‬ ‫טבלת‬ ‫את‬ ‫מחזיק‬ Chrominance DC – 12 rowsChrominance DC – 12 rows Luminance DC – 12 rowsLuminance DC – 12 rows Chrominance AC – 163 rowsChrominance AC – 163 rows Luminance AC – 163 rowsLuminance AC – 163 rows Sum: 350 rows * 20bit =Sum: 350 rows * 20bit = 875byte875byte 9bit address9bit address Flash writer ROMFlash writer ROM ‫ה‬ ‫את‬ ‫מחזיק‬‫ה‬ ‫את‬ ‫מחזיק‬HeaderHeader‫ה‬ ‫קובץ‬ ‫בתחילת‬ ‫שנכתב‬‫ה‬ ‫קובץ‬ ‫בתחילת‬ ‫שנכתב‬jpegjpeg‫עבור‬ ‫הדחוסות‬ ‫הקוונטיזציה‬ ‫טבלאות‬ ‫ואת‬‫עבור‬ ‫הדחוסות‬ ‫הקוונטיזציה‬ ‫טבלאות‬ ‫ואת‬ .‫במערכת‬ ‫הנתמכות‬ ‫האיכויות‬ ‫שלושת‬.‫במערכת‬ ‫הנתמכות‬ ‫האיכויות‬ ‫שלושת‬ 881881rows * 8bit =rows * 8bit = 881bytes881bytes 10bit address10bit address 26
  • 27. ROM & RAM summaryROM & RAM summary RAM Blocks = 126KbyteRAM Blocks = 126Kbyte!! All otherAll other ROM = 3.8kbROM = 3.8kb RAM = 0.6kbRAM = 0.6kb 27
  • 29. Advanced FeatureAdvanced Feature Date StamperDate Stamper ‫כל‬ ‫להדביק‬ ‫אפשרות‬ :‫המידע‬ ‫מעבר‬ ‫בזמן‬ ‫לתמונה‬ ‫תאריך‬ ‫הדבקת‬font ‫ב‬ ‫השמור‬ROM‫את‬ ‫ולקבוע‬ ‫ורוחבית‬ ‫אורכית‬ ‫מתיחה‬ ‫לבצע‬ ‫ניתן‬ .‫מיועד‬ .‫מובנים‬ ‫פרמטרים‬ ‫שינויי‬ ‫ע"י‬ ‫התאריך‬ ‫הדבקת‬ ‫מיקום‬ BONUS BONUS 29
  • 30. BONUS:BONUS: date_stamperdate_stamper  Inputs:Inputs: R_aline, G_aline, B_alineR_aline, G_aline, B_aline –– original alined RGB.original alined RGB. datedate –– the date to be stamped.the date to be stamped. date_en - enable/disable stamping feature.date_en - enable/disable stamping feature.  Outputs:Outputs: R_out, G_out, B_outR_out, G_out, B_out –– ““stampedstamped”” RGB.RGB. 30
  • 31. BONUS:BONUS: date_stamper contdate_stamper cont.. muxdate_reg 8 MUL DIG_HEIGHT LOGIC LOGIC LOGIC LOGIC start spen_in hd clk LOGIC LOGIC X_cnt Y_cnt X_START_FROM Y_START_FROM row_num col_num work_flag DIG_WIDTH LOGIC LOGIC CUBE_HEIGHT LOGIC LOGICCUBE_WIDTH dig_col dig_row dig_start_add + fonts ROM “ascii” ordered add mux 5 1 mux }R,G,B}outoriginal {R,G,B{ stamp_pixel {255,0,0} 3 3 work_flag work_flag work_flag 31
  • 32. BONUS:BONUS: date_stamper contdate_stamper cont.. .‫בקלות‬ ‫לשינוי‬ ‫וניתנים‬ ‫כפרמטרים‬ ‫מוגדרים‬ ‫והמיקומים‬ ‫המימדים‬ 1234 1 2 3 4 X_cnt = X_START_FROM Y_cnt = Y_START_FROM col_num = 0 row_num = 0 image: digit dimensions: CUBE_HEIGHT pixel CUBE_WIDTH DIG_WIDTH DIG_HEIGHT cube dimensions: 32
  • 33. BONUS:BONUS: date_stamper contdate_stamper cont.. :‫נוספים‬ ‫מימדים‬ ‫כמה‬:‫נוספים‬ ‫מימדים‬ ‫כמה‬ CUBE_HEIGHT CUBE_WIDTH CUBE_HEIGHT CUBE_WIDTH CUBE_HEIGHT CUBE_WIDTH 33
  • 34. BONUS:BONUS: date_stamper contdate_stamper cont.. – ‫בו‬ ‫באזור‬ ‫רק‬ ‫פעיל‬ ‫המודול‬work_flag = 1. .‫ישירות‬ ‫מועברים‬ ‫הפיקסלים‬ ,‫זה‬ ‫לאזור‬ ‫מחוץ‬ – ‫התמונה‬ ‫שאר‬work_flag = 0 – ‫התאריך‬ ‫הדבקת‬ ‫אזור‬work_flag = 1 34
  • 35. BONUS:BONUS: date_stamper contdate_stamper cont.. -‫ב‬ ‫שמורים‬ ‫התוים‬ROM‫ומסודרים‬ ‫סדר‬ ‫ע"פ‬ ‫בכתובות‬ASCII‫בכפולות‬ -‫ב‬ ‫התו‬ ‫גודל‬ ‫של‬)cubes(‫הגדרנו‬ ‫כאשר‬ ‫הינו‬ ‫אצלנו‬ ‫התו‬ ‫שגודל‬5. ASCII table font ROM 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 00 0 0 0 0 0 0 11 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 address 48x 5 49x 5 50x 5 51x 5 0 1 2 3 ‫נעשתה‬ ‫הפונטים‬ ‫של‬ ‫וההזנה‬ ‫ההגדרה‬ ...‫יצירתיות‬ ‫מעט‬ ‫ודרשה‬ ‫ידני‬ ‫באופן‬ 35
  • 36. BONUS:BONUS: date_stamper contdate_stamper cont.. -‫ב‬ ‫הפונטים‬ ‫סידור‬ROM‫אחר‬ ‫כיתוב‬ ‫כל‬ ‫הדבקת‬ ,‫התאריך‬ ‫להדבקת‬ ‫פרט‬ ,‫מאפשר‬ ‫לעיל‬ ‫שהוסבר‬ ‫כפי‬ :‫מחרוזת‬ ‫של‬ ‫פשוטה‬ ‫בצורה‬ ‫הכיתוב‬ ‫הזנת‬ ‫ע"י‬ ,‫וגינרי‬ ‫נוח‬ ‫באופן‬ ‫בו‬ ‫שחפצים‬ ‫חיצוני‬ ‫דמה‬ ‫מודול‬ ‫ע"י‬ ‫מועבר‬ ‫התאריך‬)behavioral Verilog(.‫מערך‬ ‫בתוך‬ ‫ונשמר‬ .‫ההדבקה‬ ‫אפשורביטול‬ ‫גם‬ ‫מדמה‬ ‫זה‬ ‫מודול‬ player wire [NUM_OF_DIG*8-1:0] DATE; reg date_en; date_stamper reg [7:0] date_reg[7:0[; wire en 36
  • 37. BONUS:BONUS: date_stamper contdate_stamper cont.. DebuggingDebugging – ‫לשם‬ ‫ולכן‬ ,‫עצמאי‬ ‫באופן‬ ‫פותח‬ ‫המודל‬– ‫לשם‬ ‫ולכן‬ ,‫עצמאי‬ ‫באופן‬ ‫פותח‬ ‫המודל‬debuggingdebugging.‫תמונה‬ ‫המדמה‬ ‫מימדי‬ ‫דו‬ ‫מערך‬ ‫הגדרנו‬.‫תמונה‬ ‫המדמה‬ ‫מימדי‬ ‫דו‬ ‫מערך‬ ‫הגדרנו‬ ''00.‫הנוכחי‬ ‫בפיקסל‬ ‫הדבקה‬ ‫התבצעה‬ ‫שלא‬ ‫מסמל‬ '.‫הנוכחי‬ ‫בפיקסל‬ ‫הדבקה‬ ‫התבצעה‬ ‫שלא‬ ‫מסמל‬ ' ''11.‫הדבקה‬ ‫שבוצעה‬ ‫מסמל‬ '.‫הדבקה‬ ‫שבוצעה‬ ‫מסמל‬ ' :‫לעיל‬ ‫הדוגמא‬ ‫עבור‬:‫לעיל‬ ‫הדוגמא‬ ‫עבור‬ :‫נוספות‬ ‫דוגמאות‬:‫נוספות‬ ‫דוגמאות‬37
  • 39. BONUS:BONUS: date_stamper contdate_stamper cont.. :‫האמיתית‬ ‫ובתמונה‬:‫האמיתית‬ ‫ובתמונה‬ 39
  • 40. Accessories modulesAccessories modules Int to floatInt to float JustifyJustify multipliermultiplier 40
  • 41. Int_to_fpInt_to_fp :‫תיאור‬ ‫מייצוג‬ ‫מספר‬ ‫ממיר‬ ‫המודל‬int‫לייצוג‬fp:‫ההגדרה‬ ‫לפי‬fp={ma_ea}: ma [15:0], ea [7:0[‫המודל‬ ‫של‬ ‫ובשימוש‬justify.‫בכיתה‬ ‫שניתן‬ Input: ‫בייצוג‬ ‫המספר‬int Output: ‫בייצוג‬ ‫המספר‬fp [23:0[‫של‬ ‫מצב‬ ‫על‬ ‫המצביע‬ ‫ביט‬ ,over_flow‫נוסף‬ ‫וביט‬ , ‫של‬ ‫מצב‬ ‫על‬ ‫שמצביע‬under_flow :‫הערות‬ ‫במודל‬ ‫שימוש‬ ‫עושה‬ ‫המודל‬justify. .‫בכלל‬ ‫שעון‬ ‫ללא‬ ‫עובד‬ ‫המודל‬ ‫שהוא‬ ‫כמו‬ ‫ההתחלתי‬ ‫בשלב‬ ‫מוצב‬ ‫המספר‬ ‫קבוע‬ ‫ערך‬ ‫מקבל‬ '‫והאקס‬ ,‫במטיסה‬00001111 41
  • 42. JustifyJustify :‫תיאור‬ ‫הלוגיקה‬ ‫לפי‬ ‫אותם‬ ‫ומיישר‬ '‫ואקס‬ ‫מנטיסה‬ ‫מקבל‬ ‫המודל‬ .‫המצורף‬ ‫בתרשים‬ Input: ea [7:0] ,ma [15:0] , last_is_1 Output: ‫בייצוג‬ ‫המספר‬fp :‫הערות‬ .‫בכלל‬ ‫שעון‬ ‫ללא‬ ‫עובד‬ ‫המודל‬ ‫הסיבית‬ ‫את‬ ‫לו‬ ‫והוספנו‬ ‫המקורי‬ ‫המודל‬ ‫את‬ ‫שינינו‬last_is_1 -‫ל‬ ‫שווה‬ ‫המקורית‬ '‫המנ‬ ‫של‬ ‫האחרונה‬ ‫הסיבית‬ ‫אם‬ ‫שמתריעה‬1 (‫תרשים‬ ‫)ראה‬ ‫אותה‬ ‫נחתוך‬ ‫שלא‬ ‫מנת‬ ‫על‬ (ma[i]^ma[i-1]) ‫זה‬ ‫אז‬ 0‫או‬1 - ‫?אין‬ i=16 ‫?יש‬ ma[0] = 1 ma[16:1] + 16'h1ma[16:1] {ea[7],ea} + 9'd1 last_is_1 {ma,1'b1} << (15-found-1)ma << (15-found) {ea[7],ea} - 9'd15 + found ‫?לא‬ ‫?כן‬ ‫?כן‬ ‫?כן‬ ‫?לא‬ ‫?לא‬ ma [16:0] ea_justified [7:0] over_flow under_flow ea [7:0] ma_justified [16:0] last_is_1 '‫במנט‬ ‫הראשון‬ ‫המקום‬ ‫את‬ ‫נחפש‬ ‫בריצה‬ ‫שונות‬ ‫סיביות‬ ‫שתי‬ ‫יש‬ ‫שבו‬ ‫ה‬ ‫מהסיבית‬16‫ומטה‬ ‫המקורית‬ '‫במנט‬, ‫ה‬bit‫האחרון‬ =1? 42
  • 43. MultiplyMultiply :‫תיאור‬ ‫של‬ ‫הכפלה‬ ‫מבצע‬ ‫המודל‬2‫בייצוג‬ ‫מספרים‬fp'‫אקס‬ ‫סכימת‬ ,‫מנטיסות‬ ‫)הכפלת‬ ‫ה‬ ‫בעזרת‬ ‫ותיקון‬justify.( Input: ‫בייצוג‬ ‫מספרים‬ ‫שני‬fp[23:0[ Output: ‫בייצוג‬ ‫המכפלה‬fp [23:0[‫של‬ ‫מצב‬ ‫על‬ ‫המצביע‬ ‫ביט‬ ,over_flow‫נוסף‬ ‫וביט‬ , ‫של‬ ‫מצב‬ ‫על‬ ‫שמצביע‬under_flow :‫הערות‬ .‫בכלל‬ ‫שעון‬ ‫ללא‬ ‫עובד‬ ‫המודל‬ a_fp [23:0] o_fp [23:0] over_flow under_flow b_fp [23:0] ‫נכנסים‬2‫מספרים‬fp '‫ואקס‬ ‫למנטיסה‬ ‫המספרים‬ ‫את‬ ‫נפצל‬ :‫ריפוד‬ ‫נבצע‬ - ‫האחרון‬ ‫האיבר‬ ‫בעזרת‬ ‫נרפד‬ ‫המטיסה‬ ‫את‬16‫פעמים‬ ‫אחת‬ ‫פעם‬ – ‫האחרון‬ ‫האיבר‬ ‫בעזרת‬ ‫נרפד‬ '‫האקס‬ ‫את‬ ‫המנטיסות‬ ‫את‬ ‫נכפיל‬ '‫האקס‬ ‫את‬ ‫נסכום‬ ‫ב‬ ‫התוצאה‬ ‫את‬ ‫נעביר‬justify‫תוצאה‬ ‫אתה‬ ‫ונקבל‬ :‫דוגמא‬:‫דוגמא‬ 43
  • 44. ‫בלוקים‬ ‫ויצירת‬ ‫המידע‬ ‫–קליטת‬ ‫ראשון‬ ‫חלק‬ 44
  • 45. RGBtoYCbCrRGBtoYCbCr--‫מ‬ ‫-ממיר‬‫מ‬ ‫-ממיר‬RGBRGB‫-ל‬‫-ל‬YCbCrYCbCr‫הכפלת‬ ‫ע"י‬‫הכפלת‬ ‫ע"י‬ ‫.מטריצות‬‫.מטריצות‬ WrPixelsClientWrPixelsClient--‫ה‬ ‫אל‬ ‫בלוקים‬ ‫של‬ "‫"רצועות‬ ‫-כותב‬‫ה‬ ‫אל‬ ‫בלוקים‬ ‫של‬ "‫"רצועות‬ ‫-כותב‬RAMRAM ‫שורה‬ ‫אחר‬ ‫.שורה‬‫שורה‬ ‫אחר‬ ‫.שורה‬ arb_strictarb_strict--‫למודול‬ ‫מלאה‬ ‫עדיפות‬ ‫נותן‬‫למודול‬ ‫מלאה‬ ‫עדיפות‬ ‫נותן‬ WrPixelsClientWrPixelsClient.. ram_blocksram_blocks--‫הפיקסלים‬ ‫של‬ ‫הבלוקים‬ ‫את‬ ‫מאחסן‬‫הפיקסלים‬ ‫של‬ ‫הבלוקים‬ ‫את‬ ‫מאחסן‬ ‫ע"י‬ ‫הנכתבים‬‫ע"י‬ ‫הנכתבים‬WrPixelsClientWrPixelsClient.. DCTclientDCTclient--‫מה‬ ‫הפיקסלים‬ ‫את‬ ‫-קורא‬‫מה‬ ‫הפיקסלים‬ ‫את‬ ‫-קורא‬RAMRAM‫בסדר‬‫בסדר‬ ‫הרצוי‬‫הרצוי‬‫ושולח‬‫ושולח‬Y,Cb,CrY,Cb,Cr‫בלוק‬ ‫אחר‬ ‫בלוק‬‫בלוק‬ ‫אחר‬ ‫בלוק‬ ‫ה‬ ‫אל‬ ‫-הלאה‬‫ה‬ ‫אל‬ ‫-הלאה‬DCTDCT.. date_stamperdate_stamper--‫בונוס‬‫בונוס‬‫לתמונה‬ ‫תאריך‬ ‫מדביק‬ ..‫לתמונה‬ ‫תאריך‬ ‫מדביק‬ .. 45
  • 46. 46
  • 47. RGBtoYCbCrRGBtoYCbCr  Inputs:Inputs: Red, Green, BlueRed, Green, Blue –– 24 bit fp.24 bit fp. startstart –– start convert.start convert.  Outputs:Outputs: Y, Cb, CrY, Cb, Cr –– 24 bit fp.24 bit fp. 47
  • 48. RGBtoYCbCr contRGBtoYCbCr cont.. YY 0.299 0.587 0.1140.299 0.587 0.114 RR 128128 Cb =Cb = - 0.1687 - 0.3313 0.5 *- 0.1687 - 0.3313 0.5 * G -G - 00 CrCr 0.5 - 0.4187 - 0.08130.5 - 0.4187 - 0.0813 BB 00 logiclogic mux 0.2990.299 0.5870.587 0.1140.114 -- 0.16870.1687 -- 0.33130.3313 0.50.5 0.50.5 -- 0.41870.4187 -- 0.08130.0813 mul add reg mux R G B j j i i Y Cb Cr -128 48
  • 49. RGBtoYCbCr contRGBtoYCbCr cont.. start calculations dout_valid, when Y,Cb and Cr calculated and ready. 49
  • 50. RGBtoYCbCr contRGBtoYCbCr cont.. ‫פעולה‬ ‫ועקרון‬ ‫תכנון‬ ‫שיקולי‬‫פעולה‬ ‫ועקרון‬ ‫תכנון‬ ‫שיקולי‬ ‫ב‬ ‫שימוש‬‫ב‬ ‫שימוש‬multipliermultiplier.‫יחיד‬.‫יחיד‬ ‫של‬ ‫מימדי‬ ‫דו‬ ‫כמערך‬ ‫מוחזקת‬ ‫הקבועים‬ ‫מטריצת‬‫של‬ ‫מימדי‬ ‫דו‬ ‫כמערך‬ ‫מוחזקת‬ ‫הקבועים‬ ‫מטריצת‬wireswires-‫ל‬ ‫)מקוצרים‬ .-‫ל‬ ‫)מקוצרים‬ .00-‫ו‬-‫ו‬11.(‫בהתאמה‬.(‫בהתאמה‬ ‫רגיסטרים‬ ‫שני‬‫רגיסטרים‬ ‫שני‬i,ji,j.‫המטריצה‬ ‫הכפלת‬ ‫על‬ ‫רצים‬.‫המטריצה‬ ‫הכפלת‬ ‫על‬ ‫רצים‬ ‫ל‬ ‫בהתאם‬ ‫המידע‬ ‫את‬ ‫מנתבים‬ ‫ובמוצא‬ ‫בכניסה‬ ‫המוקסים‬‫ל‬ ‫בהתאם‬ ‫המידע‬ ‫את‬ ‫מנתבים‬ ‫ובמוצא‬ ‫בכניסה‬ ‫המוקסים‬i,ji,j.. ‫השורה‬ ‫ובסוף‬ ‫העמודה‬ ‫בוקטור‬ ‫השורה‬ ‫כפל‬ ‫של‬ ‫הנצבר‬ ‫הערך‬ ‫את‬ ‫שומר‬ ‫זמני‬ ‫רגיסטר‬‫השורה‬ ‫ובסוף‬ ‫העמודה‬ ‫בוקטור‬ ‫השורה‬ ‫כפל‬ ‫של‬ ‫הנצבר‬ ‫הערך‬ ‫את‬ ‫שומר‬ ‫זמני‬ ‫רגיסטר‬ .‫המתאים‬ ‫למוצא‬ ‫מועבר‬.‫המתאים‬ ‫למוצא‬ ‫מועבר‬ ‫שנבחנו‬ ‫אלטרנטיבות‬‫שנבחנו‬ ‫אלטרנטיבות‬ -‫ב‬ ‫המטריצה‬ ‫ערכי‬ ‫שמירת‬-‫ב‬ ‫המטריצה‬ ‫ערכי‬ ‫שמירת‬ROMROM.‫למודול‬ ‫מחוץ‬.‫למודול‬ ‫מחוץ‬ ‫הוספת‬ ‫מצדיקה‬ ‫שלא‬ ‫קטנה‬ ‫מספרים‬ ‫כמות‬ :‫חסרונות‬‫הוספת‬ ‫מצדיקה‬ ‫שלא‬ ‫קטנה‬ ‫מספרים‬ ‫כמות‬ :‫חסרונות‬ROMROM.. ‫הקל‬ ‫וזה‬ ,‫במטריצה‬ ‫מדובר‬ ‫כי‬ ‫יותר‬ ‫טבעית‬ ‫הייתה‬ ‫פנימי‬ ‫מימדי‬ ‫דו‬ ‫מערך‬ ‫בתוך‬ ‫הערכים‬ ‫שמירת‬‫הקל‬ ‫וזה‬ ,‫במטריצה‬ ‫מדובר‬ ‫כי‬ ‫יותר‬ ‫טבעית‬ ‫הייתה‬ ‫פנימי‬ ‫מימדי‬ ‫דו‬ ‫מערך‬ ‫בתוך‬ ‫הערכים‬ ‫שמירת‬ .‫הכפל‬ ‫פעולת‬ ‫ביצוע‬ ‫על‬.‫הכפל‬ ‫פעולת‬ ‫ביצוע‬ ‫על‬ 50
  • 51. WrPixelsClientWrPixelsClient  Inputs:Inputs: Y, Cb, CrY, Cb, Cr –– 24 bit fp.24 bit fp. ackack –– acknowledge from arb_strict.acknowledge from arb_strict.  Outputs:Outputs: datadata –– 72 bit of {Y,Cb,Cr} together.72 bit of {Y,Cb,Cr} together. strip_readystrip_ready –– finished writing a full strip into RAM.finished writing a full strip into RAM. start_addstart_add –– starting address of the strip in RAM.starting address of the strip in RAM. reqreq –– request from arb_strict.request from arb_strict. 51
  • 52. WrPixelsClient contWrPixelsClient cont.. Y Cb Cr ack to arb/ram_blocks {Y,Cb,Cr} 72 bit spen_in din_valid req add cnt cmp mux to DCTclient blocks_num 1 strip_ready (1 bit pulse), start_add (14 bit) Strip ready 0 52
  • 53. WrPixelsClient cont.WrPixelsClient cont. valid from RGBtoYCbCr pixels strip ready to DCTclient, when a full strip written to ram_blocks start_add to DCTclient, when a full strip written to ram_blocks{Y,Cb,Cr} data to ram_Blocks always receives ack for req 53
  • 54. WrPixelsClient contWrPixelsClient cont ‫פעולה‬ ‫ועקרון‬ ‫תכנון‬ ‫שיקולי‬‫פעולה‬ ‫ועקרון‬ ‫תכנון‬ ‫שיקולי‬ -‫ה‬ ‫אל‬ ‫הכתיבה‬-‫ה‬ ‫אל‬ ‫הכתיבה‬ram_blocksram_blocks‫שיש‬ ‫פעם‬ ‫בכל‬ ‫מתבצעת‬‫שיש‬ ‫פעם‬ ‫בכל‬ ‫מתבצעת‬validvalid-‫מ‬-‫מ‬RGBtoYCbCrRGBtoYCbCr.. – ‫ב‬ ‫עולה‬ ‫לכתיבה‬ ‫הכתובת‬– ‫ב‬ ‫עולה‬ ‫לכתיבה‬ ‫הכתובת‬11."‫שורה‬ ‫אחר‬ ‫"שורה‬ ‫מתבצעת‬ ‫הכתיבה‬ ‫וכך‬ ,."‫שורה‬ ‫אחר‬ ‫"שורה‬ ‫מתבצעת‬ ‫הכתיבה‬ ‫וכך‬ , ."‫שלמה‬ ‫"רצועה‬ ‫התמלאה‬ ‫מתי‬ ‫לדעת‬ ‫ניתן‬ ‫וכך‬ ‫התמונה‬ ‫אורך‬ ‫את‬ ‫בכניסה‬ ‫מקבל‬ ‫המודול‬."‫שלמה‬ ‫"רצועה‬ ‫התמלאה‬ ‫מתי‬ ‫לדעת‬ ‫ניתן‬ ‫וכך‬ ‫התמונה‬ ‫אורך‬ ‫את‬ ‫בכניסה‬ ‫מקבל‬ ‫המודול‬ ‫הפולס‬ ‫נשלח‬ ‫שהתמלאה‬ "‫"רצועה‬ ‫כל‬ ‫עבור‬‫הפולס‬ ‫נשלח‬ ‫שהתמלאה‬ "‫"רצועה‬ ‫כל‬ ‫עבור‬""strip readystrip ready””‫התחילה‬ ‫ממנה‬ ‫והכתובת‬‫התחילה‬ ‫ממנה‬ ‫והכתובת‬ -‫ה‬ ‫אל‬ ,‫להתמלא‬ "‫ה"רצועה‬-‫ה‬ ‫אל‬ ,‫להתמלא‬ "‫ה"רצועה‬DCTclientDCTclient.‫לקרוא‬ ‫להתחיל‬ ‫ומהיכן‬ ‫מתי‬ ‫שידע‬ ‫מנת‬ ‫על‬.‫לקרוא‬ ‫להתחיל‬ ‫ומהיכן‬ ‫מתי‬ ‫שידע‬ ‫מנת‬ ‫על‬ -‫מה‬ ‫עדיפות‬ ‫יקבל‬ ‫תמיד‬ ‫המודול‬-‫מה‬ ‫עדיפות‬ ‫יקבל‬ ‫תמיד‬ ‫המודול‬arb_strictarb_strict.‫תקינה‬ ‫מידע‬ ‫זרימת‬ ‫על‬ ‫לשמור‬ ‫מנת‬ ‫על‬.‫תקינה‬ ‫מידע‬ ‫זרימת‬ ‫על‬ ‫לשמור‬ ‫מנת‬ ‫על‬ ‫שנבחנו‬ ‫אלטרנטיבות‬‫שנבחנו‬ ‫אלטרנטיבות‬ ‫ספירת‬‫ספירת‬88hdhd."‫"רצועה‬ ‫מילוי‬ ‫לזהות‬ ‫מנת‬ ‫על‬ ,‫התמונה‬ ‫רוחב‬ ‫את‬ ‫לקבל‬ ‫,במקום‬."‫"רצועה‬ ‫מילוי‬ ‫לזהות‬ ‫מנת‬ ‫על‬ ,‫התמונה‬ ‫רוחב‬ ‫את‬ ‫לקבל‬ ‫,במקום‬ :‫החיסרונות‬:‫החיסרונות‬ -‫ה‬ ‫עקב‬ ‫סינכרון‬ ‫חוסר‬-‫ה‬ ‫עקב‬ ‫סינכרון‬ ‫חוסר‬pipelinepipeline-‫ה‬ ‫בין‬ ‫שנוצר‬-‫ה‬ ‫בין‬ ‫שנוצר‬imagerimager.‫המודול‬ ‫לבין‬.‫המודול‬ ‫לבין‬ -‫ה‬-‫ה‬hdhd.‫הלוגיקה‬ ‫את‬ ‫מסרבל‬ ‫וזה‬ ‫שורה‬ ‫בסוף‬ ‫ולא‬ ‫שורה‬ ‫בתחילת‬ ‫עולה‬.‫הלוגיקה‬ ‫את‬ ‫מסרבל‬ ‫וזה‬ ‫שורה‬ ‫בסוף‬ ‫ולא‬ ‫שורה‬ ‫בתחילת‬ ‫עולה‬ -‫ה‬ ‫בתוך‬ "‫בלוק‬ ‫אחר‬ ‫"בלוק‬ ‫של‬ ‫בסדר‬ ‫הפיקסלים‬ ‫שמירת‬-‫ה‬ ‫בתוך‬ "‫בלוק‬ ‫אחר‬ ‫"בלוק‬ ‫של‬ ‫בסדר‬ ‫הפיקסלים‬ ‫שמירת‬RAMRAM."‫שורה‬ ‫אחר‬ ‫"שורה‬ ‫ולא‬."‫שורה‬ ‫אחר‬ ‫"שורה‬ ‫ולא‬ ‫שהמודול‬ ‫החלטנו‬ ‫דבר‬ ‫של‬ ‫ובסופו‬ ,‫עקרוני‬ ‫עניין‬ ‫אינו‬ ‫זהו‬ ‫למעשה‬‫שהמודול‬ ‫החלטנו‬ ‫דבר‬ ‫של‬ ‫ובסופו‬ ,‫עקרוני‬ ‫עניין‬ ‫אינו‬ ‫זהו‬ ‫למעשה‬DCTclientDCTclient‫שיקרא‬ ‫זה‬ ‫יהיה‬‫שיקרא‬ ‫זה‬ ‫יהיה‬ ."‫בלוק‬ ‫אחר‬ ‫"בלוק‬."‫בלוק‬ ‫אחר‬ ‫"בלוק‬ 54
  • 55. arb_strictarb_strict  Inputs:Inputs: wr_data_1, wr_data_2wr_data_1, wr_data_2 –– 72 bit of {Y,Cb,Cr}.72 bit of {Y,Cb,Cr}. add_1, add_2add_1, add_2 –– wanted address of RAM.wanted address of RAM. req_1, req_2req_1, req_2 –– clients requests.clients requests. rnw_1, rnw_2rnw_1, rnw_2 –– ““read not writeread not write”” requests of the clients.requests of the clients.  Outputs:Outputs: ack_1, ack_2ack_1, ack_2 –– acknowledges to clients. 1 has higher priority.acknowledges to clients. 1 has higher priority. add, wr_data, rnwadd, wr_data, rnw –– preferred clientpreferred client’’s signals directed to RAM.s signals directed to RAM.55
  • 56. arb_strict contarb_strict cont.. logiclogic mux req1 (gets full priority) req2 ack1 ack2 Address, Data to ram_blocks Address1, Data1 Address2 Client1 = WrPixelsClient Client2 = DCTclient 56
  • 57. arb_strict contarb_strict cont.. client_2 requests constantly, But he gets ack only if client_1 doesn’t send a request. whenever client_1 sends a request, he’s acknowledged immediately. the acknowledged client’s wires connected to ram_blocks. client1 = WrPixelsClient client2 = DCTclient 57
  • 58. arb_strict contarb_strict cont.. ‫פעולה‬ ‫ועקרון‬ ‫תכנון‬ ‫שיקולי‬‫פעולה‬ ‫ועקרון‬ ‫תכנון‬ ‫שיקולי‬ -‫ה‬ ‫אל‬ ‫דרכו‬ ‫המחוברים‬ ‫המודולים‬ ‫בין‬ ‫עדיפות‬ ‫יחס‬ ‫מגדיר‬-‫ה‬ ‫אל‬ ‫דרכו‬ ‫המחוברים‬ ‫המודולים‬ ‫בין‬ ‫עדיפות‬ ‫יחס‬ ‫מגדיר‬ram_blocksram_blocks.. -‫ל‬ ‫פניה‬ ‫מבקש‬ ‫ביותר‬ ‫המועדף‬ ‫שהמודול‬ ‫פעם‬ ‫בכל‬-‫ל‬ ‫פניה‬ ‫מבקש‬ ‫ביותר‬ ‫המועדף‬ ‫שהמודול‬ ‫פעם‬ ‫בכל‬ram_blocksram_blocks ((reqreq‫אישור‬ ‫מקבל‬ ‫הוא‬ (‫אישור‬ ‫מקבל‬ ‫הוא‬ ( ‫מיידי‬‫מיידי‬))ackack((-‫ה‬ ‫אל‬ ‫פונה‬ ‫אחר‬ ‫מודול‬ ‫זמן‬ ‫באותו‬ ‫אם‬ ‫תלות‬ ‫ללא‬ ,-‫ה‬ ‫אל‬ ‫פונה‬ ‫אחר‬ ‫מודול‬ ‫זמן‬ ‫באותו‬ ‫אם‬ ‫תלות‬ ‫ללא‬ ,ram_blocksram_blocks.. -‫ה‬ ‫עם‬ ‫מתקשר‬ ‫המועדף‬ ‫המודול‬ ‫אם‬ ,‫כן‬ ‫כמו‬-‫ה‬ ‫עם‬ ‫מתקשר‬ ‫המועדף‬ ‫המודול‬ ‫אם‬ ,‫כן‬ ‫כמו‬ram_blocksram_blocks‫אישור‬ ‫יקבל‬ ‫לא‬ ‫אחר‬ ‫מודול‬ ‫שום‬‫אישור‬ ‫יקבל‬ ‫לא‬ ‫אחר‬ ‫מודול‬ ‫שום‬ .‫ההתקשרות‬ ‫את‬ ‫יסיים‬ ‫המועדף‬ ‫שהמודול‬ ‫עד‬ ‫פנייה‬ ‫יבקש‬ ‫אם‬.‫ההתקשרות‬ ‫את‬ ‫יסיים‬ ‫המועדף‬ ‫שהמודול‬ ‫עד‬ ‫פנייה‬ ‫יבקש‬ ‫אם‬))strict lockstrict lock((.. ‫בין‬ ‫נקבע‬ ‫העדיפות‬ ‫יחס‬ ‫אצלנו‬‫בין‬ ‫נקבע‬ ‫העדיפות‬ ‫יחס‬ ‫אצלנו‬22– ‫בלבד‬ ‫מודולים‬– ‫בלבד‬ ‫מודולים‬11--WrPixelsClient, 2-DCTclientWrPixelsClient, 2-DCTclient.. ‫שנבחנו‬ ‫אלטרנטיבות‬‫שנבחנו‬ ‫אלטרנטיבות‬ ‫למימוש‬ ‫קונפיגורציות‬ ‫כמה‬ ‫יש‬ ‫למעשה‬‫למימוש‬ ‫קונפיגורציות‬ ‫כמה‬ ‫יש‬ ‫למעשה‬arbarb‫שקונפיגורציית‬ ‫כמובן‬ ‫אך‬ ,‫בקורס‬ ‫שנלמדו‬ ‫כפי‬‫שקונפיגורציית‬ ‫כמובן‬ ‫אך‬ ,‫בקורס‬ ‫שנלמדו‬ ‫כפי‬ -‫ה‬-‫ה‬strict lockstrict lock-‫מ‬ ‫למנוע‬ ‫שאין‬ ‫כיוון‬ ‫עבורינו‬ ‫ביותר‬ ‫המתאימה‬ ‫היא‬-‫מ‬ ‫למנוע‬ ‫שאין‬ ‫כיוון‬ ‫עבורינו‬ ‫ביותר‬ ‫המתאימה‬ ‫היא‬WrPixelsClientWrPixelsClient‫את‬‫את‬ -‫ה‬ ‫עם‬ ‫ההתקשרות‬-‫ה‬ ‫עם‬ ‫ההתקשרות‬ram_blocksram_blocks.(‫לעיל‬ ‫)ראה‬ ‫מקרה‬ ‫בשום‬.(‫לעיל‬ ‫)ראה‬ ‫מקרה‬ ‫בשום‬ 58
  • 59. ram_blocksram_blocks  Inputs:Inputs: addadd –– 14 bit address.14 bit address. wr_datawr_data –– 72 bit of {Y,Cb,Cr}to store.72 bit of {Y,Cb,Cr}to store.  Outputs:Outputs: rd_datard_data –– 72 bit of {Y,Cb,Cr}to read.72 bit of {Y,Cb,Cr}to read. 59
  • 60. ram_blocks contram_blocks cont.. “block1” “block2” ram_blocks R 24bit G 24bit B 24bit R 24bit B 24bit R 24bit B 24bit R 24bit B 24bit R 24bit B 24bit R 24bit B 24bit R 24bit B 24bit R 24bit B 24bit R 24bit B 24bit R 24bit B 24bit R 24bit B 24bit R 24bit B 24bit R 24bit B 24bit R 24bit B 24bit R 24bit B 24bit R 24bit B 24bit R 24bit B 24bit R 24bit B 24bit R 24bit B 24bit R 24bit B 24bit R 24bit B 24bit R 24bit B 24bit R 24bit B 24bit R 24bit B 24bit line1 of block1 line1 of block2 line2 of block1 G 24bit G 24bit G 24bit G 24bit G 24bit G 24bit G 24bit G 24bit G 24bit G 24bit G 24bit G 24bit G 24bit G 24bit G 24bit G 24bit G 24bit G 24bit G 24bit G 24bit G 24bit G 24bit G 24bit IMAGE "‫"רגיל‬ ‫בסדר‬ ‫מילוי‬ "‫שורה‬ ‫אחר‬ ‫"שורה‬ 60
  • 61. ram_blocks contram_blocks cont.. the pixels being filled: srrip_ready, DCTclient can start reading the data. rnw swiches to read because DCTclient began reading. DCTclient begin reading the data. WrPixelsClient continues write occasionaly, and the data not being read during this cycle. 61
  • 62. ram_blocks contram_blocks cont.. ‫פעולה‬ ‫ועקרון‬ ‫תכנון‬ ‫שיקולי‬‫פעולה‬ ‫ועקרון‬ ‫תכנון‬ ‫שיקולי‬ ‫לצורך‬ "‫בלוק‬ ‫אחר‬ ‫"בלוק‬ ‫של‬ ‫בסדר‬ ‫ממנו‬ ‫שישלפו‬ ‫מנת‬ ‫על‬ ‫הפיקסלים‬ ‫את‬ ‫זמנית‬ ‫מאחסן‬‫לצורך‬ "‫בלוק‬ ‫אחר‬ ‫"בלוק‬ ‫של‬ ‫בסדר‬ ‫ממנו‬ ‫שישלפו‬ ‫מנת‬ ‫על‬ ‫הפיקסלים‬ ‫את‬ ‫זמנית‬ ‫מאחסן‬ -‫ה‬ ‫ביצוע‬-‫ה‬ ‫ביצוע‬DCTDCT.. ‫הינו‬ ‫תא‬ ‫כל‬ ‫רוחב‬‫הינו‬ ‫תא‬ ‫כל‬ ‫רוחב‬2424‫כפול‬ ‫ביט‬‫כפול‬ ‫ביט‬33‫ובסה"כ‬ ,‫פיקסלים‬‫ובסה"כ‬ ,‫פיקסלים‬7272.‫ביט‬.‫ביט‬ ‫עד‬ ‫זמנית‬ ‫בו‬ ‫לאחסן‬ ‫יוכל‬ ‫שהזיכרון‬ ‫כך‬ ‫תוכנן‬ ‫הכתובות‬ ‫מרחב‬‫עד‬ ‫זמנית‬ ‫בו‬ ‫לאחסן‬ ‫יוכל‬ ‫שהזיכרון‬ ‫כך‬ ‫תוכנן‬ ‫הכתובות‬ ‫מרחב‬22.‫מלאות‬ "‫"רצועות‬.‫מלאות‬ "‫"רצועות‬ ‫הינו‬ ‫המירבי‬ ‫התמונה‬ ‫שרוחב‬ ‫ובהנחה‬‫הינו‬ ‫המירבי‬ ‫התמונה‬ ‫שרוחב‬ ‫ובהנחה‬10241024:‫הינו‬ ‫החישוב‬ ,‫פיקסלים‬:‫הינו‬ ‫החישוב‬ ,‫פיקסלים‬ 1024 * 8 * 2 = 16K1024 * 8 * 2 = 16K =>=> 14 bit14 bit ‫שנבחנו‬ ‫אלטרנטיבות‬‫שנבחנו‬ ‫אלטרנטיבות‬ .‫יותר‬ ‫בזבזני‬ ‫אך‬ ‫פשוט‬ ‫יותר‬ ‫זה‬ ,‫רצועה‬ ‫לכל‬ ‫אחד‬ ,‫זיכרון‬ ‫אזורי‬ ‫שני‬ ‫בין‬ ‫מיתוג‬.‫יותר‬ ‫בזבזני‬ ‫אך‬ ‫פשוט‬ ‫יותר‬ ‫זה‬ ,‫רצועה‬ ‫לכל‬ ‫אחד‬ ,‫זיכרון‬ ‫אזורי‬ ‫שני‬ ‫בין‬ ‫מיתוג‬ ‫פיקסלים‬ ‫בשורה‬ ‫שורות‬ ‫ברצועה‬ ‫רצועות‬ 62
  • 63. DCTclientDCTclient  Inputs:Inputs: startstart –– strip ready in RAM.strip ready in RAM. start_addstart_add –– starting address of the strip in RAM.starting address of the strip in RAM. rd_datard_data –– 72 bit of {Y,Cb,Cr} from RAM.72 bit of {Y,Cb,Cr} from RAM. ackack –– acknowledge from arb_strict.acknowledge from arb_strict.  Outputs:Outputs: Ydata, Cbdata, CrdataYdata, Cbdata, Crdata –– 24 bit fp.24 bit fp. reqreq –– request from arb_strict.request from arb_strict. 63
  • 64. DCTclient contDCTclient cont.. ram_blocks line1 of block1 line1 of block2 line2 of block1 Y Cb Cr mux {Y,Cb,Cr} 72 bit ack computed address computed address to ram_blocks (through arb_strict) R 24bit G 24bit B 24bit R 24bit G 24bit B 24bit R 24bit G 24bit B 24bit R 24bit G 24bit B 24bit R 24bit G 24bit B 24bit R 24bit G 24bit B 24bit R 24bit G 24bit B 24bit R 24bit G 24bit B 24bit R 24bit G 24bit B 24bit R 24bit G 24bit B 24bit R 24bit G 24bit B 24bit R 24bit G 24bit B 24bit R 24bit G 24bit B 24bit R 24bit G 24bit B 24bit R 24bit G 24bit B 24bit R 24bit G 24bit B 24bit R 24bit G 24bit B 24bit R 24bit G 24bit B 24bit R 24bit G 24bit B 24bit R 24bit G 24bit B 24bit R 24bit G 24bit B 24bit R 24bit G 24bit B 24bit R 24bit G 24bit B 24bit R 24bit G 24bit B 24bit R 24bit G 24bit B 24bit R 24bit G 24bit B 24bit R 24bit G 24bit B 24bit R 24bit G 24bit B 24bit R 24bit G 24bit B 24bit R 24bit G 24bit B 24bit R 24bit G 24bit B 24bit R 24bit G 24bit B 24bit R 24bit G 24bit B 24bit R 24bit G 24bit B 24bit R 24bit G 24bit B 24bit R 24bit G 24bit B 24bit R 24bit G 24bit B 24bit R 24bit G 24bit B 24bit R 24bit G 24bit B 24bit R 24bit G 24bit B 24bit R 24bit G 24bit B 24bit R 24bit G 24bit B 24bit R 24bit G 24bit B 24bit R 24bit G 24bit B 24bit R 24bit G 24bit B 24bit R 24bit G 24bit B 24bit R 24bit G 24bit B 24bit R 24bit G 24bit B 24bit G 24bit “block1” Y Cb Cr “block2” “block3” "‫בלוק‬ ‫אחר‬ ‫"בלוק‬ ‫של‬ ‫בסדר‬ ‫ושליחה‬ ‫שליפה‬ 64
  • 65. DCTclient contDCTclient cont.. start received from WrPixelsClient when a strip is ready. the read address is set to the start_add received from WrPixelsClient, and advanced on. req being set, and ack received. d_out_valid, with 8 clock spaces required by the DCT modules. 65
  • 66. DCTclient contDCTclient cont.. ‫פעולה‬ ‫ועקרון‬ ‫תכנון‬ ‫שיקולי‬‫פעולה‬ ‫ועקרון‬ ‫תכנון‬ ‫שיקולי‬ -‫ה‬-‫ה‬DCTclientDCTclient-‫מה‬ ‫הפיקסלים‬ ‫את‬ ‫שולף‬-‫מה‬ ‫הפיקסלים‬ ‫את‬ ‫שולף‬ram_blocksram_blocks‫מעביר‬ ‫שהוא‬ ‫כך‬ ‫מוגדר‬ ‫סדר‬ ‫ע"פ‬‫מעביר‬ ‫שהוא‬ ‫כך‬ ‫מוגדר‬ ‫סדר‬ ‫ע"פ‬ -‫ה‬ ‫אל‬ ‫הלאה‬ ‫אותם‬-‫ה‬ ‫אל‬ ‫הלאה‬ ‫אותם‬DCTDCT."‫בלוק‬ ‫אחר‬ ‫"בלוק‬ ‫של‬ ‫בסדר‬."‫בלוק‬ ‫אחר‬ ‫"בלוק‬ ‫של‬ ‫בסדר‬ ‫הפולס‬ ‫את‬ ‫מקבל‬‫הפולס‬ ‫את‬ ‫מקבל‬""strip readystrip ready””"‫ה"רצועה‬ ‫מאוחסנת‬ ‫שבה‬ ‫ההתחלתית‬ ‫הכתובת‬ ‫ואת‬"‫ה"רצועה‬ ‫מאוחסנת‬ ‫שבה‬ ‫ההתחלתית‬ ‫הכתובת‬ ‫ואת‬ ‫הנוכחית‬‫הנוכחית‬))start_addstart_add((-‫מה‬ ‫הפיקסלים‬ ‫את‬ ‫לקרוא‬ ‫ומהיכן‬ ‫מתי‬ ‫יודע‬ ‫וכך‬ ,-‫מה‬ ‫הפיקסלים‬ ‫את‬ ‫לקרוא‬ ‫ומהיכן‬ ‫מתי‬ ‫יודע‬ ‫וכך‬ ,ram_blocksram_blocks.. ‫פנימיים‬ ‫מונים‬ ‫שני‬ ‫מכיל‬ ‫המודול‬ :‫הכתובת‬ ‫חישוב‬‫פנימיים‬ ‫מונים‬ ‫שני‬ ‫מכיל‬ ‫המודול‬ :‫הכתובת‬ ‫חישוב‬i,ji,j‫והעמודה‬ ‫השורה‬ ‫מספר‬ ‫את‬ ‫המציינים‬‫והעמודה‬ ‫השורה‬ ‫מספר‬ ‫את‬ ‫המציינים‬ ‫ומונה‬ ,‫הנוכחי‬ ‫הבלוק‬ ‫בתוך‬ ‫הנוכחי‬ ‫הפיקסל‬ ‫של‬‫ומונה‬ ,‫הנוכחי‬ ‫הבלוק‬ ‫בתוך‬ ‫הנוכחי‬ ‫הפיקסל‬ ‫של‬block_cntblock_cnt‫בתוך‬ ‫הנוכחי‬ ‫הבלוק‬ ‫את‬ ‫המציין‬‫בתוך‬ ‫הנוכחי‬ ‫הבלוק‬ ‫את‬ ‫המציין‬ ‫הבלוקים‬ ‫מספר‬ ‫את‬ ‫בכניסה‬ ‫מקבל‬ ‫כן‬ ‫כמו‬ ."‫ה"רצועה‬‫הבלוקים‬ ‫מספר‬ ‫את‬ ‫בכניסה‬ ‫מקבל‬ ‫כן‬ ‫כמו‬ ."‫ה"רצועה‬))blocks_numblocks_num((.. :‫הינו‬ ‫כך‬ ‫אם‬ ‫הפיקסל‬ ‫לשליפת‬ ‫הכתובת‬ ‫חישוב‬:‫הינו‬ ‫כך‬ ‫אם‬ ‫הפיקסל‬ ‫לשליפת‬ ‫הכתובת‬ ‫חישוב‬ add = start_add + (i*blocks_num*8 + block_cnt*8 + jadd = start_add + (i*blocks_num*8 + block_cnt*8 + j)) ‫ממתין‬‫ממתין‬88-‫ו‬ ‫לפיקסל‬ ‫פיקסל‬ ‫בין‬ ‫מלאים‬ ‫שעונים‬-‫ו‬ ‫לפיקסל‬ ‫פיקסל‬ ‫בין‬ ‫מלאים‬ ‫שעונים‬450450-‫ה‬ ‫אל‬ ‫בשליחה‬ ‫לבלוק‬ ‫בלוק‬ ‫בין‬ ‫שעונים‬-‫ה‬ ‫אל‬ ‫בשליחה‬ ‫לבלוק‬ ‫בלוק‬ ‫בין‬ ‫שעונים‬ DCTDCT.‫פעולתו‬ ‫לביצוע‬ ‫הנדרש‬ ‫הזמן‬ ‫את‬ ‫לו‬ ‫לתת‬ ‫מנת‬ ‫על‬.‫פעולתו‬ ‫לביצוע‬ ‫הנדרש‬ ‫הזמן‬ ‫את‬ ‫לו‬ ‫לתת‬ ‫מנת‬ ‫על‬ -‫ה‬ "‫"ריקון‬ ‫שקצב‬ ‫לדאוג‬ ‫יש‬ ,‫זאת‬ ‫עם‬ ‫יחד‬-‫ה‬ "‫"ריקון‬ ‫שקצב‬ ‫לדאוג‬ ‫יש‬ ,‫זאת‬ ‫עם‬ ‫יחד‬ram_blocksram_blocks,‫שלו‬ ‫המילוי‬ ‫מקצב‬ ‫יותר‬ ‫מהיר‬ ‫יהיה‬,‫שלו‬ ‫המילוי‬ ‫מקצב‬ ‫יותר‬ ‫מהיר‬ ‫יהיה‬ .‫הפיקסלים‬ ‫של‬ "‫"דריסה‬ ‫למנוע‬ ‫מנת‬ ‫על‬.‫הפיקסלים‬ ‫של‬ "‫"דריסה‬ ‫למנוע‬ ‫מנת‬ ‫על‬ ‫שנבחנו‬ ‫אלטרנטיבות‬‫שנבחנו‬ ‫אלטרנטיבות‬ -‫ב‬ ‫שהוסבר‬ ‫כפי‬-‫ב‬ ‫שהוסבר‬ ‫כפי‬WrPixelsClientWrPixelsClient-‫מה‬ ‫רגיל‬ ‫בסדר‬ ‫נעשית‬ ‫היתה‬ ‫השליפה‬ ,-‫מה‬ ‫רגיל‬ ‫בסדר‬ ‫נעשית‬ ‫היתה‬ ‫השליפה‬ ,ram_blocksram_blocks‫אילו‬‫אילו‬ ."‫בלוק‬ ‫אחר‬ ‫"בלוק‬ ‫של‬ ‫בסדר‬ ‫מראש‬ ‫הפיקסלים‬ ‫את‬ ‫בו‬ ‫לאחסן‬ ‫מחליטים‬ ‫היינו‬."‫בלוק‬ ‫אחר‬ ‫"בלוק‬ ‫של‬ ‫בסדר‬ ‫מראש‬ ‫הפיקסלים‬ ‫את‬ ‫בו‬ ‫לאחסן‬ ‫מחליטים‬ ‫היינו‬ 66
  • 67. ‫המידע‬ ‫–עיבוד‬ ‫שני‬ ‫חלק‬‫המידע‬ ‫–עיבוד‬ ‫שני‬ ‫חלק‬ 67
  • 69. DCT AlgorithmDCT Algorithm CC== DCT(Block) = C * Block * CDCT(Block) = C * Block * C’’ 69
  • 70. DCTDCT :‫תיאור‬ :‫הבאה‬ ‫בצורה‬ ‫מקדמים‬ ‫במטריצת‬ ‫המטריצה‬ ‫של‬ ‫הכפלה‬ ‫מבצע‬ ‫המודל‬ ."‫"זיגזג‬ ‫בסדר‬ ‫התוצאה‬ ‫את‬ ‫ופולט‬ Input: data_in:‫בייצוג‬ ‫מספר‬fp, ‫של‬ ‫מבלוק‬ ‫כחלק‬64‫המיצגים‬ ‫מספרים‬ ‫מטריצה‬8X8‫לימין‬ ‫שמאל‬ ‫שורה‬ ‫אחרי‬ ‫.שורה‬ spen_in:) ‫הבלוק‬ ‫כניסת‬ ‫זמן‬ ‫כל‬ ‫דלוק‬64*8+1‫מחזורים‬ ). d_in_valid:‫בכניסת‬ ‫דלוק‬fp‫אחד‬ ‫)מחזור‬ ‫.)אחד‬ rst, mclk Output: data_out:‫בייצוג‬ ‫מספר‬fp, ‫כחלק‬ ,‫המטריצות‬ ‫מכפלת‬ ‫תוצאת‬ ‫שהוא‬ ‫של‬ ‫מבלוק‬64‫מטריצה‬ ‫המיצגים‬ ‫מספרים‬8X8‫"זיגזג‬ ‫."בסידור‬ spen_out:) ‫הבלוק‬ ‫יציאת‬ ‫זמן‬ ‫כל‬ ‫דלוק‬64*8+1‫מחזורים‬ ). d_out_valid:‫ביציאת‬ ‫דלוק‬fp‫אחד‬ ‫)מחזור‬ ‫.)אחד‬ :‫הערות‬ ‫תשמש‬ ‫קבועים‬ ‫מטריצת‬ ‫אותה‬ ‫ולכן‬ ‫אורטוגונלית‬ ‫היא‬ ‫המטריצה‬ .‫ומימין‬ ‫משמאל‬ ‫להכפלה‬ ‫נמתין‬ ‫האחרון‬ ‫האיבר‬ ‫כניסת‬ ‫מרגע‬17.‫הראשון‬ ‫האיבר‬ ‫ליציאת‬ ‫מחזורים‬ 1 C In C− × × 1 T C C− = T input 70
  • 71. + 1 1 0 1 0 1 1 0… valid x ROM DCT – block diagramDCT – block diagram data_in[23:0] data_out[23:0] 24 24 1 ‫שנרשום‬ ‫ראשונה‬ ‫פעם‬ ‫וזו‬ ‫במידה‬ -‫ה‬ ‫במקום‬i‫הנוכחי‬ ‫בבלוק‬ ‫בטיפול‬ ‫ה‬ ‫את‬ ‫נרשום‬data_in‫נסכום‬ ‫אחרת‬ ‫משמאל‬ ‫הכפלה‬ ‫של‬ ‫מצב‬ ‫בין‬ ‫יברור‬ ‫)שאז‬ ‫מימין‬ ‫להכפלה‬ (‫נכנסת‬ ‫)מטריצה‬ ‫הקודמת‬ ‫ההכפלה‬ ‫תוצאת‬ ‫היא‬ ‫המטריצה‬ ‫ב‬ ‫ששמורה‬ram( ‫וולידציה‬ ‫מערך‬ ram 64 fp 71
  • 72. :‫הנכנס‬ ‫הבלוק‬ ‫תחילת‬:‫הנכנס‬ ‫הבלוק‬ ‫תחילת‬ ‫ה‬spen_in‫עולה‬ spen_out‫וה‬d_out_valid‫החוצה‬ ‫דבר‬ ‫שום‬ ‫מוציאים‬ ‫לא‬ ‫אנחנו‬ ‫כולו‬ ‫הבלוק‬ ‫של‬ ‫האינפוטים‬ ‫כל‬ ‫את‬ ‫נקבל‬ ‫שלא‬ ‫)עד‬ ‫.)למטה‬ ‫איתחול‬ ‫לצורך‬ ‫נוסף‬ ‫מחזור‬ ‫מקבל‬ ‫הראשון‬ ‫שהאיבר‬ ‫לב‬ ‫נשים‬ SignalsSignals ‫החוצה‬ ‫איברים‬ ‫הוצאת‬‫החוצה‬ ‫איברים‬ ‫הוצאת‬:: ‫שה‬ ‫שמהרגע‬spen_out.(‫עמודה‬ ‫כפול‬ ‫שורה‬ ‫של‬ ‫מכפלה‬ ‫בעצם‬ ‫)אחרי‬ ‫החוצה‬ ‫אחד‬ ‫איבר‬ ‫יוצא‬ ‫מחזורים‬ ‫שמונה‬ ‫כל‬ ‫עולה‬ , 72
  • 73. :‫מקבילית‬ ‫עבודה‬:‫מקבילית‬ ‫עבודה‬ ‫שלושה‬DCT: ‫במקביל‬ ‫עובדים‬b2v_DCT_Y , b2v_DCT_Cb , b2v_DCT_Cr‫סיגנלי‬ ‫לכולם‬ . ) ‫זהים‬ ‫מערכת‬clk,rst,spen_in,d_in_valid.‫מקדמים‬ ‫מטריצת‬ ‫ואותה‬ ( 73
  • 74. :‫תכנון‬ ‫שיקולי‬:‫תכנון‬ ‫שיקולי‬ ‫כל‬ ‫של‬ ‫קריאה‬‫כל‬ ‫של‬ ‫קריאה‬inputinput‫בלבד‬ ‫אחת‬ ‫פעם‬‫בלבד‬ ‫אחת‬ ‫פעם‬ ‫וולידציה‬ ‫מטריצת‬ ‫בעזרת‬ – ‫איתחול‬‫וולידציה‬ ‫מטריצת‬ ‫בעזרת‬ – ‫איתחול‬ ‫לוגי‬ ‫ענן‬ ,‫ליצוג‬ ‫אחת‬ ‫מטריצה‬ ‫מספיקה‬ ‫ולכן‬ ,‫אורטוגונליות‬ ‫שהמטריצות‬ ‫לב‬ ‫נשים‬ – ‫קבועים‬ ‫מטריצת‬‫לוגי‬ ‫ענן‬ ,‫ליצוג‬ ‫אחת‬ ‫מטריצה‬ ‫מספיקה‬ ‫ולכן‬ ,‫אורטוגונליות‬ ‫שהמטריצות‬ ‫לב‬ ‫נשים‬ – ‫קבועים‬ ‫מטריצת‬ .‫קריאה‬ ‫סדר‬ ‫את‬ ‫יקבע‬.‫קריאה‬ ‫סדר‬ ‫את‬ ‫יקבע‬ "‫"זיגזג‬ ‫בסדר‬ ‫התוצאות‬ ‫את‬ ‫להוציא‬ ‫מנת‬ ‫על‬ ‫מימין‬ ‫להכפיל‬ ‫סדר‬ ‫באיזה‬ ‫שקובע‬ ‫מודל‬ – ‫זיגזג‬"‫"זיגזג‬ ‫בסדר‬ ‫התוצאות‬ ‫את‬ ‫להוציא‬ ‫מנת‬ ‫על‬ ‫מימין‬ ‫להכפיל‬ ‫סדר‬ ‫באיזה‬ ‫שקובע‬ ‫מודל‬ – ‫זיגזג‬ ‫אחד‬ ‫וסכימה‬ ‫מכפלה‬ ‫במודל‬ ‫שימוש‬‫אחד‬ ‫וסכימה‬ ‫מכפלה‬ ‫במודל‬ ‫שימוש‬ ‫קבוע‬ ‫וטרופוט‬ ‫קליטה‬ ‫קצב‬ ‫על‬ ‫שמירה‬‫קבוע‬ ‫וטרופוט‬ ‫קליטה‬ ‫קצב‬ ‫על‬ ‫שמירה‬ ‫שנבחנו‬ ‫:אלטרנטיבות‬ •‫ב‬ ‫המודל‬ ‫את‬ ‫להחליף‬ ‫האופציה‬ ‫נבחנה‬ – ‫זיגזג‬ROM‫שלטעמם‬ ‫למרות‬ ,‫במקום‬ ‫חיסכון‬ ‫משיקולי‬ ‫נפסל‬ . .‫אלגנטי‬ ‫יותר‬ ‫זה‬ ‫אחרים‬ ‫של‬ •‫המטריצה‬ ‫את‬ ‫לאתחל‬ ‫האופציה‬ ‫נבחנה‬ – ‫ערכים‬ ‫איתחול‬64‫למערך‬ ‫האופציה‬ ‫נבחרה‬ .‫אינפוטים‬ .‫שעון‬ ‫משיקולי‬ ,‫ולידציה‬ 74
  • 76. QuantizationQuantization ‫קלט‬‫קלט‬ 6464‫של‬ ‫ערכים‬‫של‬ ‫ערכים‬YY‫או‬‫או‬CbCb‫או‬‫או‬CrCr‫בצורה‬ ‫הזורמים‬ (‫)בלוק‬‫בצורה‬ ‫הזורמים‬ (‫)בלוק‬ ‫פעולת‬ ‫לאחר‬ ‫טורית‬‫פעולת‬ ‫לאחר‬ ‫טורית‬DCTDCT‫בצורת‬ ‫מיוצגים‬ ‫)הערכים‬‫בצורת‬ ‫מיוצגים‬ ‫)הערכים‬floating pointfloating point(( ‫נתונים‬ ‫עיבוד‬‫נתונים‬ ‫עיבוד‬ 1)1).‫מתאים‬ ‫קוונטיזציה‬ ‫בערך‬ ‫מחולק‬ ‫ערך‬ ‫כל‬.‫מתאים‬ ‫קוונטיזציה‬ ‫בערך‬ ‫מחולק‬ ‫ערך‬ ‫כל‬ 2)2)‫מסעיף‬ ‫התוצאה‬ ‫המרת‬‫מסעיף‬ ‫התוצאה‬ ‫המרת‬11‫בטווח‬ ‫שלמים‬ ‫למספרים‬‫בטווח‬ ‫שלמים‬ ‫למספרים‬ num< 1024num< 1024> 1024> 1024. -. - ‫פלט‬‫פלט‬ 6464‫ערכי‬‫ערכי‬DCTDCT‫של‬ ‫ושלמים‬ ‫מקוונטטים‬‫של‬ ‫ושלמים‬ ‫מקוונטטים‬YY‫או‬‫או‬CbCb‫או‬‫או‬CrCr .‫טורית‬ ‫בצורה‬ ‫הזורמים‬ (‫)בלוק‬.‫טורית‬ ‫בצורה‬ ‫הזורמים‬ (‫)בלוק‬‫המשלים‬ ‫בצורת‬ ‫מיוצגים‬ ‫)הערכים‬‫המשלים‬ ‫בצורת‬ ‫מיוצגים‬ ‫)הערכים‬ -‫ל‬-‫ל‬22(( 76
  • 77. Data_in [23:0[ Data_out [10:0[ ROM Adress [5:0[ROM Quantization Table multiply ing Quantization Float To int 1/Quantization value [23:0[ 77
  • 79. Example of signalsExample of signals Output with zeros because the quantization Delaying of one cycle 79
  • 80. QuantizationQuantization ‫פעולה‬ ‫ועקרון‬ ‫תכנון‬ ‫שיקולי‬‫פעולה‬ ‫ועקרון‬ ‫תכנון‬ ‫שיקולי‬ ‫של‬ ‫נפרד‬ ‫מודול‬ ‫יצירת‬‫של‬ ‫נפרד‬ ‫מודול‬ ‫יצירת‬float_to_intfloat_to_int‫פעולה‬ ‫של‬ ‫הקצה‬ ‫מקרי‬ ‫בכל‬ ‫להתמקד‬ ‫מנת‬ ‫על‬‫פעולה‬ ‫של‬ ‫הקצה‬ ‫מקרי‬ ‫בכל‬ ‫להתמקד‬ ‫מנת‬ ‫על‬ .‫זו‬.‫זו‬ ‫יצירת‬‫יצירת‬cyclecycle‫גבוה‬ ‫אינו‬ ‫המחיר‬ ‫כאשר‬ ‫התוצאה‬ ‫את‬ ‫לוודא‬ ‫מנת‬ ‫על‬ ‫לפלט‬ ‫קלט‬ ‫בין‬‫גבוה‬ ‫אינו‬ ‫המחיר‬ ‫כאשר‬ ‫התוצאה‬ ‫את‬ ‫לוודא‬ ‫מנת‬ ‫על‬ ‫לפלט‬ ‫קלט‬ ‫בין‬ ))pipelinepipeline(( ‫שנבחנו‬ ‫אלטרנטיבות‬‫שנבחנו‬ ‫אלטרנטיבות‬ -‫ל‬ ‫המרה‬ ‫במקום‬-‫ל‬ ‫המרה‬ ‫במקום‬intint-‫ל‬ ‫ישירה‬ ‫המרה‬-‫ל‬ ‫ישירה‬ ‫המרה‬categorycategory-‫ו‬-‫ו‬offsetoffset.‫החשוב‬ ‫הפלט‬ ‫זהו‬ ‫כי‬.‫החשוב‬ ‫הפלט‬ ‫זהו‬ ‫כי‬ -‫ה‬ ‫של‬ ‫האקספוננט‬ :‫יתרונות‬-‫ה‬ ‫של‬ ‫האקספוננט‬ :‫יתרונות‬floatfloat-‫ל‬ ‫זהה‬-‫ל‬ ‫זהה‬categorycategory-‫ה‬ ‫ומקום‬ ,-‫ה‬ ‫ומקום‬ ,offsetoffset‫)צמוד‬ ‫ידוע‬‫)צמוד‬ ‫ידוע‬ . (‫לנקודה‬. (‫לנקודה‬ ‫מקדם‬ ‫גם‬ ‫קיים‬ ‫הבא‬ ‫במודול‬ :‫חסרונות‬‫מקדם‬ ‫גם‬ ‫קיים‬ ‫הבא‬ ‫במודול‬ :‫חסרונות‬DCDC‫לאחר‬ ‫לקיימו‬ ‫אפשר‬ ‫שאי‬ ‫חיסור‬ ‫הדורש‬‫לאחר‬ ‫לקיימו‬ ‫אפשר‬ ‫שאי‬ ‫חיסור‬ ‫הדורש‬ -‫ל‬ ‫מתחלק‬ ‫שהמספר‬-‫ל‬ ‫מתחלק‬ ‫שהמספר‬categorycategory-‫ו‬-‫ו‬offsetoffset.. .‫עבודה‬ ‫יותר‬ ‫דורש‬ ‫היה‬ ‫והשינוי‬ ,‫הבא‬ ‫המודול‬ ‫את‬ ‫קודם‬ ‫בניתי‬ :‫חסרונות‬.‫עבודה‬ ‫יותר‬ ‫דורש‬ ‫היה‬ ‫והשינוי‬ ,‫הבא‬ ‫המודול‬ ‫את‬ ‫קודם‬ ‫בניתי‬ :‫חסרונות‬ 80
  • 81. RLC_DPCMRLC_DPCM ‫מטרה‬‫מטרה‬ .‫הקיים‬ ‫המידע‬ ‫את‬ ‫לכווץ‬.‫הקיים‬ ‫המידע‬ ‫את‬ ‫לכווץ‬ ‫הדרך‬‫הדרך‬ I.I.‫אלא‬ ‫כפלט‬ ‫יוצאים‬ ‫אינם‬ ‫אפס‬ ‫ערכי‬‫אלא‬ ‫כפלט‬ ‫יוצאים‬ ‫אינם‬ ‫אפס‬ ‫ערכי‬ .‫אפס‬ ‫שאינם‬ ‫לערכים‬ ‫מתווספים‬.‫אפס‬ ‫שאינם‬ ‫לערכים‬ ‫מתווספים‬ II.II.‫מחדש‬ ‫נערכים‬ ‫אפס‬ ‫שאינם‬ ‫ערכים‬‫מחדש‬ ‫נערכים‬ ‫אפס‬ ‫שאינם‬ ‫ערכים‬ ."‫האפמן‬ ‫"קוד‬ ‫בעזרת‬ ‫קידוד‬ ‫לקראת‬."‫האפמן‬ ‫"קוד‬ ‫בעזרת‬ ‫קידוד‬ ‫לקראת‬ 81
  • 82. RLC_DPCMRLC_DPCM ‫קלט‬‫קלט‬ 6464‫ערכי‬‫ערכי‬DCTDCT‫ו‬ ‫מקוונטטים‬‫ו‬ ‫מקוונטטים‬‫שלמים‬‫שלמים‬‫של‬‫של‬YY‫או‬‫או‬CbCb‫או‬‫או‬CrCr,‫ערך‬ ‫כל‬ .‫טורית‬ ‫בצורה‬ ‫הזורמים‬,‫ערך‬ ‫כל‬ .‫טורית‬ ‫בצורה‬ ‫הזורמים‬ ,‫לדוגמה‬,‫לדוגמה‬aa‫מקיים‬ ,‫מקיים‬ ,10241024<<aa>1024>1024-- :‫הערות‬:‫הערות‬ ‫של‬ ‫ביחידות‬ ‫מאוגדים‬ ‫הערכים‬‫של‬ ‫ביחידות‬ ‫מאוגדים‬ ‫הערכים‬6464."‫"בלוק‬ ,‫להלן‬ ,."‫"בלוק‬ ,‫להלן‬ , -‫ל‬ ‫המשלים‬ ‫בצורת‬ ‫מיוצגים‬ ‫הערכים‬-‫ל‬ ‫המשלים‬ ‫בצורת‬ ‫מיוצגים‬ ‫הערכים‬22.. ‫מקדם‬ ‫הוא‬ "‫ב"בלוק‬ ‫הראשון‬ ‫הערך‬ ‫כי‬ ‫לב‬ ‫נשים‬‫מקדם‬ ‫הוא‬ "‫ב"בלוק‬ ‫הראשון‬ ‫הערך‬ ‫כי‬ ‫לב‬ ‫נשים‬DCDC‫מקדמי‬ ‫והשאר‬‫מקדמי‬ ‫והשאר‬ACAC.. ‫נתונים‬ ‫עיבוד‬‫נתונים‬ ‫עיבוד‬ n‫בבלוק‬ ‫אחריו‬ ‫אם‬ ‫ורק‬ ,‫נתונים‬ ‫בעיבוד‬ ‫נרשם‬ ‫אלא‬ ‫כפלט‬ ‫יוצא‬ ‫אינו‬ ‫אפס‬ ‫שהינו‬ ‫ערך‬ ‫כל‬‫בבלוק‬ ‫אחריו‬ ‫אם‬ ‫ורק‬ ,‫נתונים‬ ‫בעיבוד‬ ‫נרשם‬ ‫אלא‬ ‫כפלט‬ ‫יוצא‬ ‫אינו‬ ‫אפס‬ ‫שהינו‬ ‫ערך‬ ‫כל‬ ‫)אם‬ .‫לפניו‬ ‫שהופיעו‬ ‫האפסים‬ ‫מספר‬ ‫ואיתו‬ ‫כפלט‬ ‫הזה‬ ‫הערך‬ ‫ייצא‬ ,‫אפס‬ ‫שאינו‬ ‫ערך‬ ‫יופיע‬‫)אם‬ .‫לפניו‬ ‫שהופיעו‬ ‫האפסים‬ ‫מספר‬ ‫ואיתו‬ ‫כפלט‬ ‫הזה‬ ‫הערך‬ ‫ייצא‬ ,‫אפס‬ ‫שאינו‬ ‫ערך‬ ‫יופיע‬ -‫מ‬ ‫יותר‬ ‫נרשמו‬-‫מ‬ ‫יותר‬ ‫נרשמו‬1515) ‫הערכים‬ ‫זוג‬ ‫ייצאו‬ ‫אפסים‬) ‫הערכים‬ ‫זוג‬ ‫ייצאו‬ ‫אפסים‬0,150,15‫שאינו‬ ‫הערך‬ ‫ואח"כ‬ ,‫שצריך‬ ‫כמה‬ (‫שאינו‬ ‫הערך‬ ‫ואח"כ‬ ,‫שצריך‬ ‫כמה‬ ( ( .‫שנותר‬ ‫האפסים‬ ‫מספר‬ ‫עם‬ ‫יחד‬ ‫אפס‬( .‫שנותר‬ ‫האפסים‬ ‫מספר‬ ‫עם‬ ‫יחד‬ ‫אפס‬ n‫קטגוריה‬ ‫נמצא‬ ,‫כלומר‬ .‫הקטגוריה‬ ,‫להלן‬ ,‫משתייך‬ ‫הערך‬ ‫אליה‬ ‫הקבוצה‬ ‫מציאת‬‫קטגוריה‬ ‫נמצא‬ ,‫כלומר‬ .‫הקטגוריה‬ ,‫להלן‬ ,‫משתייך‬ ‫הערך‬ ‫אליה‬ ‫הקבוצה‬ ‫מציאת‬nn‫לערך‬‫לערך‬ aa-‫ש‬ ‫כך‬-‫ש‬ ‫כך‬22)^)^n-1) =<|a|< 2^nn-1) =<|a|< 2^n.. n-‫ה‬ ‫מציאת‬-‫ה‬ ‫מציאת‬offsetoffset.‫עולה‬ ‫בסדר‬ ‫הקטגוריה‬ ‫בתוך‬ ‫הערך‬ ‫של‬ ‫המיקום‬ ,.‫עולה‬ ‫בסדר‬ ‫הקטגוריה‬ ‫בתוך‬ ‫הערך‬ ‫של‬ ‫המיקום‬ , ‫פלט‬‫פלט‬ -‫ה‬ ,‫הערך‬ ‫של‬ ‫הקטגוריה‬ ‫את‬ ‫הכוללים‬ ‫ערכים‬-‫ה‬ ,‫הערך‬ ‫של‬ ‫הקטגוריה‬ ‫את‬ ‫הכוללים‬ ‫ערכים‬offsetoffset. ‫ברצף‬ ‫לפניו‬ ‫שהופיעו‬ ‫האפסים‬ ‫ומספר‬ ‫שלו‬. ‫ברצף‬ ‫לפניו‬ ‫שהופיעו‬ ‫האפסים‬ ‫ומספר‬ ‫שלו‬ ‫הכמות‬ ‫כי‬ ‫יודעים‬ ‫אנו‬ ‫רק‬ ‫שיצאו‬ ‫הפלט‬ ‫ערכי‬ ‫כמות‬ ‫מהי‬ ‫יודעים‬ ‫איננו‬ ‫כעת‬ ‫כי‬ ‫לב‬ ‫נשים‬‫הכמות‬ ‫כי‬ ‫יודעים‬ ‫אנו‬ ‫רק‬ ‫שיצאו‬ ‫הפלט‬ ‫ערכי‬ ‫כמות‬ ‫מהי‬ ‫יודעים‬ ‫איננו‬ ‫כעת‬ ‫כי‬ ‫לב‬ ‫נשים‬ -‫מ‬ ‫גדולה‬ ‫אינה‬-‫מ‬ ‫גדולה‬ ‫אינה‬6464.. ) ‫ערכים‬ ‫זוג‬ ‫יישלח‬ ‫אפס‬ ‫הינו‬ ‫בבלוק‬ ‫האחרון‬ ‫הערך‬ ‫אם‬ ‫כן‬ ‫כמו‬) ‫ערכים‬ ‫זוג‬ ‫יישלח‬ ‫אפס‬ ‫הינו‬ ‫בבלוק‬ ‫האחרון‬ ‫הערך‬ ‫אם‬ ‫כן‬ ‫כמו‬0,00,0.‫בלוק‬ ‫סוף‬ ‫לסמן‬ (.‫בלוק‬ ‫סוף‬ ‫לסמן‬ ( 82
  • 83. ‫מחדש‬ ‫הערכים‬ ‫הצגת‬‫מחדש‬ ‫הערכים‬ ‫הצגת‬ ‫קטגוריה‬‫קטגוריה‬ 83
  • 84. ‫מחדש‬ ‫הערכים‬ ‫הצגת‬‫מחדש‬ ‫הערכים‬ ‫הצגת‬ -‫ה‬-‫ה‬OffsetOffset‫את‬ ‫מציג‬‫את‬ ‫מציג‬‫מיקום‬‫מיקום‬ ‫הקטגוריה‬ ‫בתוך‬ ‫המספר‬‫הקטגוריה‬ ‫בתוך‬ ‫המספר‬‫בסדר‬‫בסדר‬ ‫עולה‬‫עולה‬.. ‫קטגוריה‬ ‫לדוגמה‬‫קטגוריה‬ ‫לדוגמה‬33‫בה‬‫בה‬ :‫המספרים‬ ‫נמצאים‬:‫המספרים‬ ‫נמצאים‬ --77,,……-,-,4,44,4,,……77 -‫ה‬ ‫כי‬ ‫לראות‬ ‫ניתן‬-‫ה‬ ‫כי‬ ‫לראות‬ ‫ניתן‬offsetoffset‫תמיד‬‫תמיד‬ -‫ה‬ ‫כן‬ ‫כמו‬ .‫חיובי‬-‫ה‬ ‫כן‬ ‫כמו‬ .‫חיובי‬offsetoffset‫של‬‫של‬ ‫המספר‬ ‫הוא‬ ‫חיובי‬ ‫מספר‬‫המספר‬ ‫הוא‬ ‫חיובי‬ ‫מספר‬ .‫סימן‬ ‫בביט‬ ‫צורך‬ ‫ללא‬ ,‫עצמו‬.‫סימן‬ ‫בביט‬ ‫צורך‬ ‫ללא‬ ,‫עצמו‬ -‫ה‬ ‫של‬ ‫הביטים‬ ‫מספר‬-‫ה‬ ‫של‬ ‫הביטים‬ ‫מספר‬offsetoffset ‫המספר‬ ‫מערך‬ ‫אחד‬ ‫בביט‬ ‫קטן‬‫המספר‬ ‫מערך‬ ‫אחד‬ ‫בביט‬ ‫קטן‬ .‫בכניסה‬.‫בכניסה‬ OffsetOffset ‫מציאת‬‫מציאת‬‫המספר‬‫המספר‬ offsetoffset 77 77 66 66 55 55 44 44 -4-4 33 -5-5 22 -6-6 11 -7-7 00 84
  • 85. ‫בבינארי‬ ‫מחדש‬ ‫הערכים‬ ‫הצגת‬‫בבינארי‬ ‫מחדש‬ ‫הערכים‬ ‫הצגת‬ ‫המספר‬‫המספר‬ ‫בבינארי‬‫בבינארי‬ 77 0000000011100000000111 66 0000000011000000000110 55 0000000010100000000101 44 0000000010000000000100 -4-4 111111111100111111111100 -5-5 111111111011111111111011 -6-6 111111111010111111111010 -7-7 111111111001111111111001 ‫קטגוריה‬ ‫מציאת‬‫קטגוריה‬ ‫מציאת‬33 ]]1111[‫ביטים‬[‫ביטים‬ OffsetOffset ]]1010[‫ביטים‬[‫ביטים‬ 0000000000000000111111 00000000000000111111 0000000000000000111010 00000000000000111010 0000000000000000110101 00000000000000110101 0000000000000000110000 00000000000000110000 1111111111111111001111 00000000000000001111 1111111111111111001010 00000000000000001010 1111111111111111000101 000000000000000000 11 a=a- 1 If (a<0( ‫הפחתה‬ ‫לערכים‬ ‫השליליים‬ 85
  • 86. Data_in [10:0[ Category[3:0[ RLC_DPCM Ofset[9:0 [ Num of zeros [3:0[ d_out_validd_in_valid 1) if the input is zero just count it. 2) If not, find the large bit of the number (category) 3) The location of the input in the category Inputs & Outputs 86
  • 87. 11’h000 Not relevant RLC_DPCM Not relevant Not relevant d_out_valid ==0d_in_valid==1 Num==0 Valid data became to not valid Data_in is zero a=0 87
  • 88. ‫המידע‬ ‫דילול‬ ‫של‬ ‫דוגמאות‬‫המידע‬ ‫דילול‬ ‫של‬ ‫דוגמאות‬ A lot of Valid data became to not valid data thanks to the quantization that zero the data. ‫אפסים‬ ‫האפסים‬ ‫מספר‬ 88
  • 89. ‫אפסים‬ ‫לדילול‬ ‫דוגמה‬‫אפסים‬ ‫לדילול‬ ‫דוגמה‬ 63‫כערך‬ ‫יוצאים‬ ‫בכניסה‬ ‫אפס‬ ‫ערכי‬DC) ‫וערך‬0,0.‫ביציאה‬ ‫בלבד‬ ( 63‫רק‬ ‫מתוכם‬ ‫ערכים‬5‫רק‬ ‫ובהמשך‬ ‫אפסים‬ ‫עם‬ ‫המעורבים‬ ‫אפס‬ ‫שאינם‬ ‫ערכים‬ -‫כ‬ ‫יוצאים‬ .‫אפסים‬5) ‫וערך‬ ‫ערכים‬0,0‫בלבד‬ ( 89
  • 90. ‫בלוקים‬ ‫של‬ ‫באוסף‬ ‫אפסים‬ ‫לדילול‬ ‫דוגמה‬‫בלוקים‬ ‫של‬ ‫באוסף‬ ‫אפסים‬ ‫לדילול‬ ‫דוגמה‬ ‫כניסה‬ ‫יציאה‬ 90
  • 91. 11’h050 = 80 4’b0111 = 7 RLC_DPCM 10’b00010100 00 = 80 4’b0001 = 1 d_out_valid ==1d_in_valid==1 Num!=0 Num = 00001010000 Category = 7 Offset = 80 0001010000 Next Data_in is positive a>0 91
  • 92. 11’h7b0 = -80 4’b0111 = 7 RLC_DPCM 10’b 00000101111 = 474’b0001 = 1 d_out_valid ==1d_in_valid==1 Num!=0 Num = 11110110000 Category = 7 Offset = 00000101111 Next Data_in is negative a<0 92
  • 93. ‫במקביל‬ ‫המעובדים‬ ‫בלוקים‬ ‫לשלושה‬ ‫דוגמה‬‫במקביל‬ ‫המעובדים‬ ‫בלוקים‬ ‫לשלושה‬ ‫דוגמה‬ in out C b Cr Y 93
  • 94. ,‫זה‬ ‫מודול‬,‫זה‬ ‫מודול‬RLC_DPCMRLC_DPCM‫פעם‬ ‫המידע‬ ‫את‬ ‫מקבל‬ ,‫פעם‬ ‫המידע‬ ‫את‬ ‫מקבל‬ , -‫ב‬-‫ב‬88,‫בכניסה‬ ‫מידע‬ ‫נאגר‬ ‫לא‬ ‫לכן‬ ,‫שעון‬ ‫מחזורי‬,‫בכניסה‬ ‫מידע‬ ‫נאגר‬ ‫לא‬ ‫לכן‬ ,‫שעון‬ ‫מחזורי‬ .‫פשוטה‬ ‫המידע‬ ‫וקבלת‬.‫פשוטה‬ ‫המידע‬ ‫וקבלת‬ ‫לאורך‬ ‫יציב‬ ‫להיות‬ ‫צריך‬ ‫המידע‬ ‫ביציאה‬‫לאורך‬ ‫יציב‬ ‫להיות‬ ‫צריך‬ ‫המידע‬ ‫ביציאה‬33‫מחזורי‬‫מחזורי‬ ‫קיימים‬ ‫כי‬ ‫בדיוק‬ ‫שעון‬‫קיימים‬ ‫כי‬ ‫בדיוק‬ ‫שעון‬33‫של‬ ‫מודולים‬‫של‬ ‫מודולים‬RLC_DPCMRLC_DPCM ‫פעם‬ ‫כל‬ ‫קורא‬ ‫אחריהם‬ ‫הבא‬ ‫המודול‬ ‫אך‬ ‫במקביל‬‫פעם‬ ‫כל‬ ‫קורא‬ ‫אחריהם‬ ‫הבא‬ ‫המודול‬ ‫אך‬ ‫במקביל‬ .‫מהשלושה‬ ‫מאחד‬ ‫רק‬.‫מהשלושה‬ ‫מאחד‬ ‫רק‬ ‫תזמון‬‫תזמון‬‫והיציאה‬ ‫הכניסה‬‫והיציאה‬ ‫הכניסה‬ 94
  • 95. ‫בלוק‬ ‫בסוף‬ ‫האותות‬ ‫לתזמון‬ ‫דוגמה‬‫בלוק‬ ‫בסוף‬ ‫האותות‬ ‫לתזמון‬ ‫דוגמה‬ ‫המידע‬ ‫בכניסה‬ -‫ל‬ ‫בתוקף‬cycle,‫אחד‬ -‫ל‬ ‫ביציאה‬ ‫אך‬3 cycles Spen_in‫ולאחר‬ ‫יורד‬ 3‫יורד‬ ‫מחזורים‬ spen_out end of block ‫מחזורי‬ ‫לשלושה‬ ‫מופיע‬ ‫שעון‬ 95
  • 96. ‫ופתרונה‬ ‫המוצא‬ ‫בתזמון‬ ‫בעיה‬‫ופתרונה‬ ‫המוצא‬ ‫בתזמון‬ ‫בעיה‬ ,‫במוצא‬ ‫כלל‬ ‫ערכים‬ ‫אין‬ ,‫אפס‬ ‫הם‬ ‫בכניסה‬ ‫הערכים‬ ‫עוד‬ ‫כל‬,‫במוצא‬ ‫כלל‬ ‫ערכים‬ ‫אין‬ ,‫אפס‬ ‫הם‬ ‫בכניסה‬ ‫הערכים‬ ‫עוד‬ ‫כל‬ ‫לאחר‬ ‫אם‬ ,‫,לדוגמה‬ ‫אבל‬‫לאחר‬ ‫אם‬ ,‫,לדוגמה‬ ‫אבל‬6060‫שונה‬ ‫ערך‬ ‫מופיע‬ ‫אפסים‬‫שונה‬ ‫ערך‬ ‫מופיע‬ ‫אפסים‬ ‫לצאת‬ ‫אמורים‬ ,‫מאפס‬‫לצאת‬ ‫אמורים‬ ,‫מאפס‬44.‫ברצף‬ ‫מספרים‬ ‫זוגות‬.‫ברצף‬ ‫מספרים‬ ‫זוגות‬ ((0,150,15) , () , (0,150,15) , () , (0,150,15) , () , (a,12a,12)) ‫הבעיה‬‫הבעיה‬‫להישאר‬ ‫צריך‬ ‫ערך‬ ‫כל‬ :‫להישאר‬ ‫צריך‬ ‫ערך‬ ‫כל‬ :33‫המוצא‬ ,‫כן‬ ‫אם‬ ,‫מחזורים‬‫המוצא‬ ,‫כן‬ ‫אם‬ ,‫מחזורים‬ -‫ל‬ ‫תפוס‬-‫ל‬ ‫תפוס‬1212‫לאחר‬ ‫אבל‬ ,‫מחזורים‬‫לאחר‬ ‫אבל‬ ,‫מחזורים‬88‫ערך‬ ‫נכנס‬ ‫מחזורים‬‫ערך‬ ‫נכנס‬ ‫מחזורים‬ .‫חדש‬.‫חדש‬ ‫הפתרון‬‫הפתרון‬‫להפעיל‬ ‫ניתן‬ :‫להפעיל‬ ‫ניתן‬ :FIFOFIFO‫מיותר‬ ‫זה‬ ‫פתרון‬ ,‫לדעתי‬ ,‫אך‬ ,‫מיותר‬ ‫זה‬ ‫פתרון‬ ,‫לדעתי‬ ,‫אך‬ , ‫לשמור‬ ‫וצריך‬ ‫ידועים‬ ‫שאינם‬ ‫ערכים‬ ‫הרבה‬ ‫כאן‬ ‫אין‬ ‫כי‬‫לשמור‬ ‫וצריך‬ ‫ידועים‬ ‫שאינם‬ ‫ערכים‬ ‫הרבה‬ ‫כאן‬ ‫אין‬ ‫כי‬ ‫האחרון‬ ‫הערך‬ ‫של‬ ‫שמירה‬ ‫רק‬ ‫ונדרשת‬ ,‫אותם‬‫האחרון‬ ‫הערך‬ ‫של‬ ‫שמירה‬ ‫רק‬ ‫ונדרשת‬ ,‫אותם‬))a,12a,12((.. 16+16+16+12=60 96
  • 97. ‫הערך‬‫הערך‬DCDC -‫ה‬ ‫ערך‬ ‫הוא‬ ‫הבלוק‬ ‫של‬ ‫הראשון‬ ‫הערך‬-‫ה‬ ‫ערך‬ ‫הוא‬ ‫הבלוק‬ ‫של‬ ‫הראשון‬ ‫הערך‬DCDC.. -‫ה‬ ‫ערך‬-‫ה‬ ‫ערך‬DCDC‫הערכים‬ ‫נעים‬ ‫שסביבו‬ ‫הממוצע‬ ‫הוא‬‫הערכים‬ ‫נעים‬ ‫שסביבו‬ ‫הממוצע‬ ‫הוא‬ .‫הבלוק‬ ‫של‬ ‫הבאים‬.‫הבלוק‬ ‫של‬ ‫הבאים‬ -‫ה‬ ‫קידוד‬-‫ה‬ ‫קידוד‬DCDC‫גדול‬ ‫הפרש‬ ‫שאין‬ ‫ההנחה‬ ‫על-פי‬ ‫נבנה‬‫גדול‬ ‫הפרש‬ ‫שאין‬ ‫ההנחה‬ ‫על-פי‬ ‫נבנה‬ -‫ה‬ ‫ערך‬ ‫בין‬-‫ה‬ ‫ערך‬ ‫בין‬DCDC‫בבלוק‬ ‫לערכו‬ ‫הנוכחי‬ ‫בבלוק‬‫בבלוק‬ ‫לערכו‬ ‫הנוכחי‬ ‫בבלוק‬ -‫ה‬ ‫של‬ ‫המוצא‬ ‫ערך‬ ‫לכן‬ ,‫הקודם‬-‫ה‬ ‫של‬ ‫המוצא‬ ‫ערך‬ ‫לכן‬ ,‫הקודם‬DCDC‫ההפרש‬ ‫הוא‬‫ההפרש‬ ‫הוא‬ .‫הנ"ל‬ ‫הערכים‬ ‫בין‬.‫הנ"ל‬ ‫הערכים‬ ‫בין‬Out = DIFF = DCOut = DIFF = DCii –– DCDCi-1i-1 -‫ה‬ ‫ערך‬-‫ה‬ ‫ערך‬DCDC.‫אפס‬ ‫הוא‬ ‫אם‬ ‫גם‬ ‫מקרה‬ ‫בכל‬ ‫נרשם‬.‫אפס‬ ‫הוא‬ ‫אם‬ ‫גם‬ ‫מקרה‬ ‫בכל‬ ‫נרשם‬ 97
  • 98. -‫ה‬ ‫ערך‬ ‫הצגת‬-‫ה‬ ‫ערך‬ ‫הצגת‬DCDC‫מחדש‬‫מחדש‬ ‫למקרה‬ ‫לב‬ ‫לשים‬ ‫יש‬‫למקרה‬ ‫לב‬ ‫לשים‬ ‫יש‬ ‫בין‬ ‫ההפרש‬ ‫בו‬ ‫קצה‬‫בין‬ ‫ההפרש‬ ‫בו‬ ‫קצה‬ |-‫מ‬ ‫גדול‬ ‫הערכים‬|-‫מ‬ ‫גדול‬ ‫הערכים‬ 10241024‫לערכי‬ ‫לכן‬ ,|‫לערכי‬ ‫לכן‬ ,| -‫ה‬-‫ה‬DCDC‫קטגוריה‬ ‫יש‬‫קטגוריה‬ ‫יש‬ ,‫נוספת‬,‫נוספת‬1111.. -‫ה‬ ‫ערך‬-‫ה‬ ‫ערך‬offsetoffset‫נבנה‬‫נבנה‬ ‫לשאר‬ ‫זהה‬ ‫בצורה‬‫לשאר‬ ‫זהה‬ ‫בצורה‬ .‫הערכים‬.‫הערכים‬ 98
  • 99. -‫ה‬ ‫לקידוד‬ ‫דוגמא‬-‫ה‬ ‫לקידוד‬ ‫דוגמא‬DCDC ‫הבלוק‬ ‫הבא‬ Category 4 + offset 3 = -12 DCi – DCi-1 = -25 –(-13( = -12 DCi – DCi-1 = 8 –(-3( = 11 DCi – DCi-1 = -4 –8 = -12 Category 4 + offset 11 = 11 Category 4 + offset 003 = -12 99
  • 100. ‫הבלוק‬ ‫לסיום‬ ‫אפשרויות‬ ‫שתי‬ ‫ישנן‬‫הבלוק‬ ‫לסיום‬ ‫אפשרויות‬ ‫שתי‬ ‫ישנן‬ .‫מאפס‬ ‫שונה‬ ‫הנכנס‬ ‫האחרון‬ ‫הערך‬.‫מאפס‬ ‫שונה‬ ‫הנכנס‬ ‫האחרון‬ ‫הערך‬ ‫יעלו‬ ‫איתו‬ ‫ויחד‬ ‫כרגיל‬ ‫מקודד‬ ‫יהיה‬ ‫במוצא‬ ‫הערך‬‫יעלו‬ ‫איתו‬ ‫ויחד‬ ‫כרגיל‬ ‫מקודד‬ ‫יהיה‬ ‫במוצא‬ ‫הערך‬ ‫הדגלים‬ ‫שעון‬ ‫מחזורי‬ ‫לשלושה‬‫הדגלים‬ ‫שעון‬ ‫מחזורי‬ ‫לשלושה‬““d_out_validd_out_valid”” ““eobeob””.. ‫הדגל‬‫הדגל‬““spen_outspen_out””.‫אחריהם‬ ‫אחד‬ ‫שעון‬ ‫מחזור‬ ‫יירד‬.‫אחריהם‬ ‫אחד‬ ‫שעון‬ ‫מחזור‬ ‫יירד‬ .‫אפס‬ ‫הוא‬ ‫הנכנס‬ ‫האחרון‬ ‫הערך‬.‫אפס‬ ‫הוא‬ ‫הנכנס‬ ‫האחרון‬ ‫הערך‬ ) ‫יהיה‬ ‫במוצא‬ ‫הערך‬) ‫יהיה‬ ‫במוצא‬ ‫הערך‬0,00,0,(,( ‫כלומר‬‫כלומר‬category = 0 & num_of_zeros =0category = 0 & num_of_zeros =0 .‫הבלוק‬ ‫סיום‬ ‫על‬ ‫להודיע‬ ‫כדי‬.‫הבלוק‬ ‫סיום‬ ‫על‬ ‫להודיע‬ ‫כדי‬ ‫הבלוק‬ ‫סוף‬‫הבלוק‬ ‫סוף‬ 100
  • 101. ‫דוגמא‬ - ‫הבלוק‬ ‫סוף‬‫דוגמא‬ - ‫הבלוק‬ ‫סוף‬ ‫מאפס‬ ‫שונה‬ ‫האחרון‬ ‫המידע‬ '‫א‬ ‫אפשרות‬ ‫אפס‬ ‫הוא‬ ‫האחרון‬ ‫המידע‬ '‫ב‬ ‫אפשרות‬ ) ‫במוצא‬ ‫המידע‬0,0( 101
  • 102. RLC_DPCMRLC_DPCM ‫פעולה‬ ‫ועקרון‬ ‫תכנון‬ ‫שיקולי‬‫פעולה‬ ‫ועקרון‬ ‫תכנון‬ ‫שיקולי‬ ‫חיובי‬ ‫)במספר‬ .‫לפיו‬ ‫הקטגוריה‬ ‫והגדרת‬ ‫השלם‬ ‫במספר‬ ‫הראשון‬ ‫המשמעותי‬ ‫הביט‬ ‫מציאת‬‫חיובי‬ ‫)במספר‬ .‫לפיו‬ ‫הקטגוריה‬ ‫והגדרת‬ ‫השלם‬ ‫במספר‬ ‫הראשון‬ ‫המשמעותי‬ ‫הביט‬ ‫מציאת‬ (‫אחד‬ ‫שאינו‬ ‫הראשון‬ ‫הביט‬ ‫השלילי‬ ‫ובביט‬ ‫אפס‬ ‫שאינו‬ ‫הראשון‬ ‫הביט‬(‫אחד‬ ‫שאינו‬ ‫הראשון‬ ‫הביט‬ ‫השלילי‬ ‫ובביט‬ ‫אפס‬ ‫שאינו‬ ‫הראשון‬ ‫הביט‬ -‫ה‬ ‫מציאת‬-‫ה‬ ‫מציאת‬offsetoffset.‫לעיל‬ ‫הוסברה‬.‫לעיל‬ ‫הוסברה‬ ‫הוא‬ ‫המידע‬ ‫אם‬ ‫)אלא‬ ‫אפס‬ ‫ערך‬ ‫קליטת‬ ‫בכל‬ ‫האפסים‬ ‫מספר‬ ‫שמירת‬‫הוא‬ ‫המידע‬ ‫אם‬ ‫)אלא‬ ‫אפס‬ ‫ערך‬ ‫קליטת‬ ‫בכל‬ ‫האפסים‬ ‫מספר‬ ‫שמירת‬DCDC(( ‫בשלושה‬ ‫פעם‬ ‫נעשית‬ ‫המוצא‬ ‫אות‬ ‫קריאת‬‫בשלושה‬ ‫פעם‬ ‫נעשית‬ ‫המוצא‬ ‫אות‬ ‫קריאת‬cyclescycles‫להישאר‬ ‫חייב‬ ‫במוצא‬ ‫המידע‬ ‫לכן‬ ,‫בלבד‬‫להישאר‬ ‫חייב‬ ‫במוצא‬ ‫המידע‬ ‫לכן‬ ,‫בלבד‬ ‫לשלושה‬‫לשלושה‬cyclescycles.‫ייקרא‬ ‫לא‬ ‫כלל‬ ‫במוצא‬ ‫שהמידע‬ ‫ייתכן‬ ‫או‬ ‫כפולה‬ ‫קריאה‬ ‫תיתכן‬ ‫אחרת‬ ‫בדיוק‬.‫ייקרא‬ ‫לא‬ ‫כלל‬ ‫במוצא‬ ‫שהמידע‬ ‫ייתכן‬ ‫או‬ ‫כפולה‬ ‫קריאה‬ ‫תיתכן‬ ‫אחרת‬ ‫בדיוק‬ ‫תוך‬ ‫למבוא‬ ‫מידע‬ ‫עוד‬ ‫יגיע‬ ‫שלא‬ ‫יודעים‬ ‫שאנו‬ ‫ומפני‬ ‫כך‬ ‫בעקבות‬‫תוך‬ ‫למבוא‬ ‫מידע‬ ‫עוד‬ ‫יגיע‬ ‫שלא‬ ‫יודעים‬ ‫שאנו‬ ‫ומפני‬ ‫כך‬ ‫בעקבות‬33,,cyclescycles-‫ה‬-‫ה‬flagsflags )‫השונים‬)‫השונים‬))d_out_valid, spen_out, eobd_out_valid, spen_out, eob‫לשלושה‬ ‫נשמרים‬ ‫עצמו‬ ‫והמידע‬‫לשלושה‬ ‫נשמרים‬ ‫עצמו‬ ‫והמידע‬cyclescycles.‫בדיוק‬.‫בדיוק‬ ‫שנבחנו‬ ‫אלטרנטיבות‬‫שנבחנו‬ ‫אלטרנטיבות‬ ‫כמה‬ ‫כלל‬ ‫בדרך‬ ‫עוברים‬ ‫מקרה‬ ‫שבכל‬ ‫מכיוון‬ ‫אבל‬ ,‫שעון‬ ‫ללא‬ ‫המודול‬ ‫את‬ ‫ליצור‬ ‫היה‬ ‫אולי‬ ‫ניתן‬‫כמה‬ ‫כלל‬ ‫בדרך‬ ‫עוברים‬ ‫מקרה‬ ‫שבכל‬ ‫מכיוון‬ ‫אבל‬ ,‫שעון‬ ‫ללא‬ ‫המודול‬ ‫את‬ ‫ליצור‬ ‫היה‬ ‫אולי‬ ‫ניתן‬ ‫לאחר‬ ‫יציב‬ ‫מידע‬ ‫להציג‬ ‫הצורך‬ ‫בגלל‬ ‫וגם‬ ‫המוצא‬ ‫באותות‬ ‫שמשתמשים‬ ‫עד‬ ‫שעון‬ ‫סיבובי‬‫לאחר‬ ‫יציב‬ ‫מידע‬ ‫להציג‬ ‫הצורך‬ ‫בגלל‬ ‫וגם‬ ‫המוצא‬ ‫באותות‬ ‫שמשתמשים‬ ‫עד‬ ‫שעון‬ ‫סיבובי‬ .‫בלבד‬ ‫אחד‬ ‫שעון‬ ‫סיבוב‬ ‫להוסיף‬ ‫העדפתי‬ ‫קצרה‬ ‫לא‬ ‫לוגיקה‬.‫בלבד‬ ‫אחד‬ ‫שעון‬ ‫סיבוב‬ ‫להוסיף‬ ‫העדפתי‬ ‫קצרה‬ ‫לא‬ ‫לוגיקה‬ ‫לערך‬ ‫אחד‬ ‫מקבילים‬ ‫מעגלים‬ ‫שני‬ ‫תוכננו‬ ‫בתחילה‬‫לערך‬ ‫אחד‬ ‫מקבילים‬ ‫מעגלים‬ ‫שני‬ ‫תוכננו‬ ‫בתחילה‬DCDC‫לערכי‬ ‫ואחד‬‫לערכי‬ ‫ואחד‬ACAC‫הקידוד‬ ‫מנגנון‬ ‫אבל‬‫הקידוד‬ ‫מנגנון‬ ‫אבל‬ .‫המתבקשים‬ ‫השינויים‬ ‫עם‬ ‫יחיד‬ ‫במודול‬ ‫שניהם‬ ‫את‬ ‫לעבד‬ ‫העדפתי‬ ‫לכן‬ ,‫דומה‬.‫המתבקשים‬ ‫השינויים‬ ‫עם‬ ‫יחיד‬ ‫במודול‬ ‫שניהם‬ ‫את‬ ‫לעבד‬ ‫העדפתי‬ ‫לכן‬ ,‫דומה‬ FIFOFIFO‫שעון‬ ‫מחזורי‬ ‫כמה‬ ‫לאורך‬ ‫יחיד‬ ‫ערך‬ ‫שמירת‬ ‫אך‬ ,‫לעיל‬ ‫שהוזכר‬ ‫קצה‬ ‫במקרה‬ , ‫במוצא‬‫שעון‬ ‫מחזורי‬ ‫כמה‬ ‫לאורך‬ ‫יחיד‬ ‫ערך‬ ‫שמירת‬ ‫אך‬ ,‫לעיל‬ ‫שהוזכר‬ ‫קצה‬ ‫במקרה‬ , ‫במוצא‬ ‫פשוטה‬ ‫יותר‬ ‫בצורה‬ ‫הבעיה‬ ‫את‬ ‫.פותרת‬‫פשוטה‬ ‫יותר‬ ‫בצורה‬ ‫הבעיה‬ ‫את‬ ‫.פותרת‬ 102