More Related Content Similar to Jpeg encoder (19) Jpeg encoder1. 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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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