פורסם 2012 במאי 1713 שנים מחבר את הלימודים סיימתי מזמן ואת הידע שבקושי היה לי כבר נשכח.... ולהתחיל להתעסק בזה אני לא מתכוון.אני צריך להגיש את ה"עבודה" הזאת במקום לגשת לבוחן ולקבל ציון סופי.
פורסם 2012 במאי 1713 שנים לפי מה שהבנתי ממך, אתה רוצה מכונת מצבים עם 2 מצבים, כאשר במצבים האלה אתה פשוט סופר עד 15? (וכשאתה מגיע ל-15 מה אתה רוצה שיקרה?)מה זאת אומרת 4 יציאות שסופרות את היציאות\כניסות ? - אתה מתכוון למשתנה שמגודר בתור - Inout או Buffer פשוט בתוכנה?שאלות כלליות:יש לך דרישות מסיומת ממשתנים? (שיהיו בטיפוס מסיום?)האם יש לך איזה שהוא ידע ב-VHDL - דבר הכי דוגרי?
פורסם 2012 במאי 1713 שנים מחבר אני רק מתאר את מה שנאמר לי לעשות ממש במילים אלה פחות או יותר, גם עניין ה4 יציאות.אני צריך מכונת מצבים שתספור מעלה כאשר יש 1 בכניסה ומטה כאשר יש 0 בכניסה, כאשר זה מגיע ל0 או 15 זה נתקע עד שמתחלף המצב.אין לי מושג מה זה אומר, זה מה שנאמר לי....לגבי הבאפר זה לא נראה לי משנה כי מבחינת תוכנה זה אותו הדבר כל עוד זה לא בחומרה לא?אין דרישות מסויימות למשתנים.יש לי ידע ממש מינימלי, אבל לא משהו שאני יכול להשתמש בו.תודה!
פורסם 2012 במאי 1813 שנים אני צריך מכונת מצבים שתספור מעלה כאשר יש 1 בכניסה ומטה כאשר יש 0 בכניסה, כאשר זה מגיע ל0 או 15 זה נתקע עד שמתחלף המצב.אז לפי המשפט הזה אני מבין שאתה רוצה שהוא יתקע במצב מסוים כל עוד הכניסה לא משתנה?
פורסם 2012 במאי 1813 שנים Library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_arith.all;use ieee.std_logic_unsigned.all;entity TEST is port( X : in std_logic; --X=1 - count up. clk,reset : in std_logic );end entity;architecture rtl of TEST is signal counter : integer range 0 to 15; type state_type is (up,down,idle); -- Register to hold the current state signal state : state_type; begin process(clk,reset,X) is begin if(reset = '1') then state <= idle; elsif (clk'event and clk = '1') then case state is when idle => if(X = '1') then counter <= 0; state <= up; elsif(X = '0') then counter <= 15; state <= down; end if; when up => if(counter = 15) then state <= idle; else counter <= counter +1; end if; when down => if(counter = 0) then state <= idle; else counter <= counter - 1; end if; when others => state <= idle; end case; end if; end process;end architecture;כמה דברים:1. עשיתי לך את הקוד תחת clk ו- reset אסינכורני (כך עובדים היום).2. עשיתי לך מצב נוסף (idle) ששם הוא בוחר לפי הכניסה X את המצב המתאים.3. לא הבנתי את הקטע של ה- 4 יציאות\כניסות - אז זה לא מופיע.מפה נראה לי שתוכל להמשיך (לפי מה שהבנתי ממך, זה צריך להיות התרגיל, רק לא ברור לי רמת התרגיל).בהצלחה.
פורסם 2012 במאי 1813 שנים מצחיק... אני נותן תרגיל די דומה למהנדסים חדשים אצלנו כחלק מקורס פנימי ב-VHDL. מורכב יותר כמובן אבל באותו סגנון. הרעיון הוא שיש לחניון מחסום יציאה ומחסום כניסה וסה"כ 15 מקומות חניה בחניון. כל פעם שמחסום נפתח הוא שולח פולס למערכת הבקרה. מערכת הבקרה צריכה: 1. לתת אינדיקציה תמידית כמה מקומות פנויים בחניון. 2. לסגור את מחסום הכניסה אם החניון מלא 3. לסגור את מחסום היציאה אם החניון ריק. צריך לרשום ENTITY עם 2 הכניסות הנ"ל, יציאת בקרה למחסומים ו4bit לציון מספר המקומות הפנויים (בינארי). גם תוכנת הבדיקה צריכה לעבור על כל המצבים האפשריים - יותר מאתגר מהיחידה עצמה... סה"כ תוכנית מאוד פשוטה, אבל צריך להגדיר מה קורה אם שניהם נפתחים בו זמנית, מה עושים במקרים "לא חוקיים", איך מאפסים את מערכת הבקרה וכדומה. יש גם נושאים למתקדמים במשימה הזו כמו איך לא לפספס פולס, איך לא לספור אותו פעמיים, טיפול ב-spikes על הקווים וכדומה.
פורסם 2012 במאי 1813 שנים הפולס שהוא שלוח הוא חיובי? - צריך לתפוס את עליית הפולס?אתה מרצה במקרה? או מראיין עבודה?
פורסם 2012 במאי 1813 שנים מחבר אין צורך לסבך את התוכנית, משהו פשוט, לא צריך מערכת פידבקים או משהו כזה. משהו ממש פשוט.
פורסם 2012 במאי 1813 שנים library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_arith.all;use ieee.std_logic_unsigned.all;entity TEST is port( clk : in std_logic; reset : in std_logic; GATE_in : in std_logic; GATE_out : in std_logic; Free_space : out std_logic_vector(3 downto 0); X_in : out std_logic; --'0' - open gate, '1' -close gate X_out : out std_logic --'0' - open gate, '1' -close gate );end entity;architecture rtl of TEST is signal f_free_space : std_logic_vector(3 downto 0); signal counter : integer range 0 to 15; type state_type is (up,down,idle,free); -- Register to hold the current state signal state : state_type; begin process(clk,reset,GATE_in,GATE_out) is begin if(reset = '1') then counter <= 0; f_free_space <= (others => '1'); X_in <= '0'; X_out <= '0'; state <= idle; elsif (clk'event and clk = '1') then case state is when idle => if(GATE_in = '1') then state <= up; elsif(GATE_out = '1') then state <= down; end if; when up => counter <= counter + 1; f_free_space <= f_free_space - 1; state <= free; X_out <= '0'; when down => counter <= counter - 1; f_free_space <= f_free_space + 1; state <= free; X_in <= '0'; when free => Free_space <= f_free_space; state <= idle; if(f_free_space = "1111") then X_out <= '1'; elsif(f_free_space = "0000") then X_in <= '1'; end if; end case; end if; end process;end architecture;זאת התוכנית המאוד פשוטה ש tmpusr דיבר עליה.אני כרגע בשלבים של לפענח בעיה שנוצרה לי בקוד המורכב יותר, לאחר-מכן אני אפרסם גם את הקוד המורכב יותר
פורסם 2012 במאי 1813 שנים שער כניסה ושער יציאה, כאשר יש 15 מקומות.Free_space - זה המקומות הפנויים בבניארי.GATE_in - זה שער הכניסה.GATE_out - זה שער היציאה.X_in - אחראי על פתיחה\סגירה של שער הכניסה.X_out - אחראי על פתיחה\סגריה של שער היציאה.Counter - מונה שבעזרתו אני סופר כמה מכוניות נכנסות או יוצאותf_free_space - דגל שעוזר לי עם המקומות הפנויים (אני לא יכול לקרוא מיציאה).ומכונות מצבים עם 4 מצבים, כאשר ב-UP הוא סופר כמה מוכניות נכסנו (בתנאי שיש 1 ב-GATE_in) ופותח את שער היציאה. ב-down הוא סופר כמה מכונית יצאו (בתנאי שיש 1 ב-GATE_out) ופותח את שער הכניסה. ב- free הוא "מציג" כמה מקומות יש וסוגר את שער היציאה מתי שהחנייה פתחוה וסוגר את שער הכניסה מתי שאין מקמות.אפשר לשכלל יותר את התוכנה, אבל ביקשת פשוט.אם צריך הסבר נוסף, אני כאן.
פורסם 2012 במאי 1813 שנים אתם מסבכים ללא צורך - לא לכל דבר צריך מכונת מצבים...כל מה שצריך זה UP-DOWN-COUNTER עם limiter וזהו כמעט.
פורסם 2012 במאי 1813 שנים אני צריך מכונת מצבים עם 2 כניסות שסופרות מ0 עד 15 מעלה ומטה. כאשר ב0 וב15 זה נתקע.הבחור ביקש מכונת מצבים.לא משנה כבר, זה נעשה.ד"א: כשאמרת למתקדמים, לא לספור פעמיים ולא לפספס ספירה, זה פשוט לממש שם F.F (כמו D F.F)?ד"א2:איך אני מצוטט 2 קטעים מ-2 אנשים?
ארכיון
דיון זה הועבר לארכיון ולא ניתן להוסיף בו תגובות חדשות.