سلام
برای پیاده سازی سخت افزاری الگوریتم اینکدرم من تازه vhdl یاد گرفتم و پیاده سازی کردم اما مشکلم این است که تعداد ALUT ها و register های بکار رفته بسیار زیادتر از حد انتظار است. فکر می کنم مشکلم این است که دستورات ترتیبی زیاد به کار می برم.
مثلا برای جمع کردن تعداد بیت های 1 موجود در یک بایت (برای مثال تعداد 1 ها در 00011010 سه عدد می باشد) یک function تعریف کردم بصورت زیر که احتمالا زیاد گیت مصرف می کند.
از طرف دیگر مشکل اینجاست که سرعت ماکس کلاک هم خیلی کم است زیر 100 مگاهرتز و از اینکدرهای رقیب کندتر است.
چگونه می توانم به این اهداف برسم؟ ( 1- تعداد گیت کمتر 2- سرعت عملکرد بیشتر )
برای مثال قسمتی از کد که تعداد یک ها در یک بیت ( هشت بیت) را جمع می زند:
function Ones(input:std_logic_vector) return int
برای پیاده سازی سخت افزاری الگوریتم اینکدرم من تازه vhdl یاد گرفتم و پیاده سازی کردم اما مشکلم این است که تعداد ALUT ها و register های بکار رفته بسیار زیادتر از حد انتظار است. فکر می کنم مشکلم این است که دستورات ترتیبی زیاد به کار می برم.
مثلا برای جمع کردن تعداد بیت های 1 موجود در یک بایت (برای مثال تعداد 1 ها در 00011010 سه عدد می باشد) یک function تعریف کردم بصورت زیر که احتمالا زیاد گیت مصرف می کند.
از طرف دیگر مشکل اینجاست که سرعت ماکس کلاک هم خیلی کم است زیر 100 مگاهرتز و از اینکدرهای رقیب کندتر است.
چگونه می توانم به این اهداف برسم؟ ( 1- تعداد گیت کمتر 2- سرعت عملکرد بیشتر )
برای مثال قسمتی از کد که تعداد یک ها در یک بیت ( هشت بیت) را جمع می زند:
function Ones(input:std_logic_vector) return int
eger is
variable sum:integer range 0 to 5;
begin
sum:=0;
for i in 0 to 4 loop
if input(i)='1' then
sum:=sum+1;
end if;
end loop;
return sum;
end O
nes;variable sum:integer range 0 to 5;
begin
sum:=0;
for i in 0 to 4 loop
if input(i)='1' then
sum:=sum+1;
end if;
end loop;
return sum;
end O
دیدگاه