פורסם 2015 בפברואר 2210 שנים אהלן.אני רוצה לבנות Linear feedback shift register שייצר לי מספרים באקראי, הבעיה היא שטווח המספרים שאני רוצה שהוא יגריל משתנה עם הזמן (גדל וקטן).LFSR "רגיל" עם טווח קבוע (14 ביט שזה הטווח המקסימלי שאני צריך) כבר הצלחתי ליצר, יש למישהו כיוון איך משנים את מספר הביטים תוך כדי שהמערכת רצה?`timescale 1ns/10ps`define BD 1 //Basic Delaymodule lfsr ( output reg [13:0]random_num, input random_enable, clk ); initial begin random_num=14'b11111111111111; end wire linear_feedback; assign #(`BD)linear_feedback =random_num[7]^random_num[3]; always @(clk) begin #(`BD)random_num={random_num[12:0],linear_feedback}; endendmodule
פורסם 2015 בפברואר 2210 שנים חבר שערי AND ליציאות של הביטים הגבוהים שלך ותזין בהם '0' בהתאם לפלט שאתה מצפה לקבל. (הדק אחד מחובר ליציאה והשני לשליטה שלך)למשל, אם אתה רוצה לקבל מספר בן 10 סיביות. דחוף '0' לשערי ה-AND של ארבעת הביטים הגבוהים.פיתרון אולי קצת "מולכלך", מוסיף דיליי (ניתן לפתור על ידי הוספת חוצצים אם זה מהווה בעיה) ולא נותן שליטה מדוייקת בטווח אבל דיי פשוט ולא מצריך התערבות נוספת בLFSR.עוזר?
פורסם 2015 בפברואר 2410 שנים מחבר מאוד מאוד עוזר. אבל נניח שאני רוצה להגביל את עצמי ל10 (1,2,3,4...,10). אני מאפס את 10 הmsb ונשאר עם 4 Lsb. זה נותן לי מ0 עד 15. אם אני אאפס כך: xxxxxxxxxxBxBx אני מוגבל עד ל10 אבל אפשר לקבל כך רק 0,2,8,10 ואני צריך את כל הטווח. נ.ב תודה על ההתיחסות למשוואה עבור 14 ביט, שיניתי את הפונקציה ל bit[1]^bit[2]^bit[13]^bit[14] =linear_feedback והקפיצות משמעותיות בהרבה [TABLE=class: wikitable] [TR] [TH=bgcolor: #F2F2F2, align: center]14[/TH] [TD][/TD] [TD]16383[/TD] [/TR] [TR] [/TR] [/TABLE] נערך 2015 בפברואר 2410 שנים על-ידי Kak
ארכיון
דיון זה הועבר לארכיון ולא ניתן להוסיף בו תגובות חדשות.