اطلاعیه

Collapse
No announcement yet.

ALU با VHDL

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

    ALU با VHDL

    سلام دوستان
    من میخام یه alu با vhdl کد بزنم.میخام این alu اعمال + و - و * و / رو انججام بده یعنی 4 عمل اصلی. قسمت + و - درست کار میکنه. دو تا عدد 4 بیتی بهش میده جمع و تفریق میکنه. پیاده سازیم هم در سطح گیت هست یعنی ساختاری یعنی dataflow. اما واسه ضرب:
    می خام از این ایده جلو برم. اول عدد دوم یعنی b رو به integer تبدیل کنم که کاری نداره. میام به ترتیب بیت ها رو در ارزششون ضرب میکنم بعد با هم جمع میکنم. تا اینجا b به دست میاد. حالا میام a رو به همین تعداد با خودش جمع میکنم. با حلقه for. اگه این جواب بده واسه تقسیم هم از همین ایده میرم ولی مشکلم اینه که اینحا مجبورم یه architucture دیگه تعریف کنم چون باید رفتاری واسم کار کنه نه ساختاری. چون به اعمال ضرب واسه ساختن b بهصورت integer نیاز دارم. اما اشکال میگیره ازم..اصلا نمیتونه b رو بسازه..از عمل ضربم اشکال میگیره..اصلا نمیتونه a وb رو از بالا بخونه. آخه چرا؟
    این ایدم درسته به نظرتون؟؟
    لطفا ج بدین
    مرسی

    #2
    پاسخ : ALU با VHDL

    نوشته اصلی توسط samaneh174
    سلام دوستان
    من میخام یه alu با vhdl کد بزنم.میخام این alu اعمال + و - و * و / رو انججام بده یعنی 4 عمل اصلی. قسمت + و - درست کار میکنه. دو تا عدد 4 بیتی بهش میده جمع و تفریق میکنه. پیاده سازیم هم در سطح گیت هست یعنی ساختاری یعنی dataflow. اما واسه ضرب:
    می خام از این ایده جلو برم. اول عدد دوم یعنی b رو به integer تبدیل کنم که کاری نداره. میام به ترتیب بیت ها رو در ارزششون ضرب میکنم بعد با هم جمع میکنم. تا اینجا b به دست میاد. حالا میام a رو به همین تعداد با خودش جمع میکنم. با حلقه for. اگه این جواب بده واسه تقسیم هم از همین ایده میرم ولی مشکلم اینه که اینحا مجبورم یه architucture دیگه تعریف کنم چون باید رفتاری واسم کار کنه نه ساختاری. چون به اعمال ضرب واسه ساختن b بهصورت integer نیاز دارم. اما اشکال میگیره ازم..اصلا نمیتونه b رو بسازه..از عمل ضربم اشکال میگیره..اصلا نمیتونه a وb رو از بالا بخونه. آخه چرا؟
    این ایدم درسته به نظرتون؟؟
    لطفا ج بدین
    مرسی
    سلام،
    عمل ضرب و تقسیم به اون صورتی که توضیح دادین در FPGA انجام نمیشه، باید از ضرب و تقسیم باینری استفاده کنید و دیگه نیازی به تبدیل به Integer هم ندارید.
    برای ضرب و تقسیم باینری هم در سطح RTL میتونید مستقیم مدار AND و OR بدید یا از ضرب و تقسیم باینری در کد استفاده کنید.
    در این لینک:
    http://en.wikibooks.org/wiki/Microprocessor_Design/ALU
    هم برای 2 بیتی و هم 4 بیتی ALU رو مثال زده. در مورد ضرب باینری هم گوگل کنید حتما نکته رو متوجه میشید.

    موفق باشید.
    اسمایل، تومورو ویل بی وُرس

    دیدگاه

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