מכונת מצבים
חלק מהיחידה יסודות במסלול ה-Verilog של Coddy. שיעור 88 מתוך 90.
אתגר
מכונת מצבים היא מעגל שיכול להיות באחד מכמה מצבים. עבור UART, יש לנו מצבים שונים עבור כל סיבית: המתנה, התחלה, סיביות הנתונים 0-7 ועצירה. מונה הסיביות (cnt) אומר לנו באיזה מצב אנחנו נמצאים. לפי cnt, אנחנו מחליטים איזה ערך לשלוח בקו tx.
יש לך את מונה הסיביות מהשיעור הקודם. עליך לשנות אותו כך שיפעל כמשדר UART.
ערכי הסיביות לשליחה (עבור האות 'A')
| cnt | ערך tx |
|---|---|
| 0 | 1 |
| 1 | 0 |
| 2 | 1 |
| 3 | 0 |
| 4 | 0 |
| 5 | 0 |
| 6 | 0 |
| 7 | 0 |
| 8 | 1 |
| 9 | 0 |
| 10 | 1 |
מה לעשות
- הוסף קלט בשם
start - הוסף פלט מסוג reg בשם
tx - בבלוק
initial, הגדרtx = 1(רמה גבוהה במצב המתנה) - שנה את לוגיקת המונה:
- כאשר
cnt == 0וגםstart == 1, הגדרcnt <= 1(התחל בשידור) - כאשר
cntבין 1 ל-9, הגדל אותו:cnt <= cnt + 1 - כאשר
cnt == 10, אפס ל-0
- כאשר
נסו בעצמכם
module uart_tx (
input clk,
output reg [3:0] cnt
);
initial begin
cnt = 0;
end
always @(posedge clk) begin
cnt <= cnt + 1;
end
endmoduleכל השיעורים ביחידה יסודות
5אופרטורים חלק 2
אופרטורים לוגייםאופרטורי צמצוםאופרטורי הזזהאופרטור שרשוראופרטור תנאיסיכום – אתגר האופרטורים3שיטת המספרים
ייצוג בינארימספרים בעלי גודל מוגדרמספרים ללא גודל מוגדרמספרים שלילייםהערכים המיוחדים X ו־Zסיכום – תבניות מספרים6מודולים
מבנה מודוליציאות קלט ופלטיציאות קלט-פלטיצירת מופע של מודולמיפוי יציאות לפי שםמיפוי יציאות לפי סדרסיכום – בניית מודולתרגלו בעצמכם: קומפיילר Verilog אונליין