اطلاعیه

Collapse
No announcement yet.

کمک در مورد یک برنامه(محاسبه دور موتور)

Collapse
X
 
  • فیلتر
  • زمان
  • Show
Clear All
new posts

    کمک در مورد یک برنامه(محاسبه دور موتور)

    سلام بچه ها
    من به یک برنامه به زبان وری لاگ خیلی احتیاج دارم
    اونم کنترل دور موتور هست
    یک modul داریم که clk و resetl و pulse بهش وارد میشه
    اسنکرون و اکتیولو هست
    clk چهل مگا هرتز و به ازاای هر دور موتور یک پالس فرستاده میشه
    حداقل دور موتور در ثانیه 9 و حداکثر 99 هست
    یک برنمه میخوام که با توجه به موارد بالا دور موتور را انازه بگیرن و به صورت bcd روی دو خروجی a و b نشون داده بشن
    a و b هر کدوم 4 بیت و مجموعا اون عدد bcd را نمایش میدن

    ممنون میشم کمکم کنین خیلی واجبه

    #2
    پاسخ : کمک در مورد یک برنامه(محاسبه دور موتور)

    یه کانتر بسازید که یه خروجی داشته باشه که هر یک ثانیه یک بشه. اون پالس رو بدید به یه کانتر دیگه که با هر لبه اون یکی بشماره و خروجی کانتر اولی رو بدید به این دومی تا هر وقت یک شد به دومی بگه که بسه و همون موقع مقدار کانتر دوم رو بفرستید برای مبدل BCD و بعد ریستش کنید(کانتر دوم).

    دیدگاه


      #3
      پاسخ : کمک در مورد یک برنامه(محاسبه دور موتور)

      سلام ممنون از جوابتون
      چند تا سوال
      1- پس نقش clk که چی هست؟
      2- مثلا فرض کنید دوذ موتور شد 90
      حالا بای بره روی خروجی های a , b که هر کدوم چهار بیت هستند و مجموعا به صورت bcd ای عدد 90 به نمایش در بیاد.این قسمت چجوریاست؟

      اصلا میشه یک برنامه کوچیک واسه قسمت دون بذارین؟

      ممنون

      دیدگاه


        #4
        پاسخ : کمک در مورد یک برنامه(محاسبه دور موتور)

        یعنی چی کلاک چی میشه کانتر اول که قرار نیست با باد هوا کار کنه! به جای استفاده از مبدل باینری به bcd یه کار دیگم میتونید بکنید برای تولید اون 9 تا 99 از دو تا کانتر استفاده کنید از دو تا 9 شمار. این جوری دیگه نیازی به تبدیل هم نداره خروجیشون bcd هست. نهایتا یه کنترلر یا استیت ماشین میخوایید که اینا رو کنترل کنه. این کد یه کانتر m شمار هست (از کتاب پروتوتاپینگ بای وی اچ دی ال). شما سه تا از این میخوایید. یکی برای تولید یک ثانیه دو تا هم برای شمارش دور.
        کد:
        module mod_m_counter
          #(
          parameter N=3, // number of bits in counter
               M=9 // mod-M
          )
          (
          input wire clk, reset,
          output wire max_tick,
          output wire [N-1:0] q
          );
        
          //signal declaration
          reg [N-1:0] r_reg;
          wire [N-1:0] r_next;
        
          // body
          // register
          always @(posedge clk, posedge reset)
           if (reset)
             r_reg <= 0;
           else
             r_reg <= r_next;
        
          // next-state logic
          assign r_next = (r_reg==(M-1)) ? 0 : r_reg + 1;
          // output logic
          assign q = r_reg;
          assign max_tick = (r_reg==(M-1)) ? 1'b1 : 1'b0;
        
        endmodule

        دیدگاه


          #5
          پاسخ : کمک در مورد یک برنامه(محاسبه دور موتور)

          ممنون آقا مجتبی
          95 درصد قضیه را گرفتم چی شد. :nice:

          دیدگاه

          لطفا صبر کنید...
          X