עדיפות לאיפוס ולהפעלה
חלק מהיחידה תכנון RTL ואימות במסלול ה-Verilog של Coddy. שיעור 16 מתוך 38.
בלוק מסונכרן לשעון יכול לשמור ערך באוגר על ידי השמטת השמה בקצוות שבהם הוא מושבת. אחסון מכוון זה שונה מנועל קומבינטורי שנוצר בטעות. כתוב סדר עדיפויות מפורש בין איפוס, טעינה והפעלה. כאן האיפוסים סינכרוניים: הם נכנסים לתוקף רק בקצה העולה של השעון.
קטע רלוונטי; ההצהרות והחיבורים שמסביב מסופקים באתגר.
always @(posedge clk) begin
if(rst) q <= 0;
else if(en) q <= data;
endהאיפוס גובר כששני אותות הבקרה פעילים, ובקצוות שבהם האיפוס אינו פעיל והמעגל מושבת, q שומר על ערכו.
השתמשו בשרשרת עדיפויות מסונכרנת אחת, והגדירו במדויק את התנהגות האיפוס, הטעינה, ההפעלה והשמירה.
אתגר
בינוניממשו אוגר בן 8 סיביות q עם איפוס סינכרוני פעיל בגבוה rst ואפשור en. בקצה עולה, האיפוס קודם ומנקה את q; אחרת, קצוות שבהם האפשור פעיל טוענים את a, וקצוות שבהם האפשור אינו פעיל משאירים את q ללא שינוי. עמודות הפלט: q. כל אותות הבקרה והנתונים יציבים לפני כל קצה עולה של השעון; התוצאות נצפות אחריו.
השלימו את design.v ושמרו על שמות המודולים והיציאות שלו. ה-testbench.v הנעול מספק שינויי קלט ומדפיס את הפלטים לאחר התייצבותם. הוא בוחר תרחיש באמצעות ארגומנט של הסימולטור, כגון +CASE=1; אין צורך בקלט סטנדרטי. אל תוסיפו להדפסות, השהיות או הוראות לסיום הסימולציה בתכנון. הפלט הצפוי הוא שורה אחת של ערכים עשרוניים לכל תצפית, מופרדים ברווח אחד ומסתיימים בתו ירידת שורה.
נסו בעצמכם
module dut (input clk, input rst, input en, input [7:0] a, output reg [7:0] q);
// החליפו את מציין המקום הזה בתכנון שלכם.
initial q = 0;
endmoduleהשיעור הזה כולל חידון קצר. התחילו את השיעור כדי לענות עליו ולעקוב אחרי ההתקדמות.
כל השיעורים ביחידה תכנון RTL ואימות
1RTL קומבינטורי אמין
ערכי ברירת מחדל מונעים נעילותמקודדי עדיפותאימות One-Hotפענוח Case בטוחסיכום - נתב בקשות4RTL סדרתי מבוקר
עדיפות לאיפוס ולהפעלהמונה רוויצינור נתונים ואות תקפותזיהוי קצוות שנדגמוסיכום — מונה אירועים2רוחבי מילה ואריתמטיקה עם סימן
שימור ביטי נשאהשוואות עם סימןהזזות ימינה אריתמטיותגלישה ורוויהסיכום - הפרש עם סימןתרגלו בעצמכם: קומפיילר Verilog אונליין