مشكلة حول احتساب # قيادة "1"

S

sycolegend

Guest
لا أحد يعرف وسيلة فعالة لحساب عدد متتالية الرائدة "1" من 32 بت صحيحا في دورة واحدة على مدار الساعة؟
على سبيل المثال :
المدخلات : 32'b1110_0010_0010_1101_0000_1111_1110_0011
الإخراج هو 3
إذا الإدخال : 32'0111_1101_0011_0000_1111_0000_1110_0000
إخراج : 0

 
هنا يذهب احد فيريلوج طريقة الكتابة
، والسماح للأداة التوليف رعاية
الامثل.هنا يذهب رمز فيريلوج!

رمز :

leading_ones النمطية (word_in ، leading_1s) ؛

مدخلات [31:0] word_in ؛

الإخراج [5:0] leading_1s ؛

ريج [5:0] leading_1s ؛

دائما @ (/ ع * * / word_in) يبدأ

casex (word_in) / / سينوبسيس parallel_case

32'b10xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx : leading_1s = 1 ؛

32'b110xxxxxxxxxxxxxxxxxxxxxxxxxxxxx : leading_1s = 2 ؛

32'b1110xxxxxxxxxxxxxxxxxxxxxxxxxxxx : leading_1s = 3 ؛

32'b11110xxxxxxxxxxxxxxxxxxxxxxxxxxx : leading_1s = 4 ؛

32'b111110xxxxxxxxxxxxxxxxxxxxxxxxxx : leading_1s = 5 ؛

32'b1111110xxxxxxxxxxxxxxxxxxxxxxxxx : leading_1s = 6 ؛

32'b11111110xxxxxxxxxxxxxxxxxxxxxxxx : leading_1s = 7 ؛

32'b111111110xxxxxxxxxxxxxxxxxxxxxxx : leading_1s = 8 ؛

32'b1111111110xxxxxxxxxxxxxxxxxxxxxx : leading_1s = 9 ؛

32'b11111111110xxxxxxxxxxxxxxxxxxxxx : leading_1s = 10 ؛

32'b111111111110xxxxxxxxxxxxxxxxxxxx : leading_1s = 11 ؛

32'b1111111111110xxxxxxxxxxxxxxxxxxx : leading_1s = 12 ؛

32'b11111111111110xxxxxxxxxxxxxxxxxx : leading_1s = 13 ؛

32'b111111111111110xxxxxxxxxxxxxxxxx : leading_1s = 14 ؛

32'b1111111111111110xxxxxxxxxxxxxxxx : leading_1s = 15 ؛

32'b11111111111111110xxxxxxxxxxxxxxx : leading_1s = 16 ؛

32'b111111111111111110xxxxxxxxxxxxxx : leading_1s = 17 ؛

32'b1111111111111111110xxxxxxxxxxxxx : leading_1s = 18 ؛

32'b11111111111111111110xxxxxxxxxxxx : leading_1s = 19 ؛

32'b111111111111111111110xxxxxxxxxxx : leading_1s = 20 ؛

32'b1111111111111111111110xxxxxxxxxx : leading_1s = 21 ؛

32'b11111111111111111111110xxxxxxxxx : leading_1s = 22 ؛

32'b111111111111111111111110xxxxxxxx : leading_1s = 23 ؛

32'b1111111111111111111111110xxxxxxx : leading_1s = 24 ؛

32'b11111111111111111111111110xxxxxx : leading_1s = 25 ؛

32'b111111111111111111111111110xxxxx : leading_1s = 26 ؛

32'b1111111111111111111111111110xxxx : leading_1s = 27 ؛

32'b11111111111111111111111111110xxx : leading_1s = 28 ؛

32'b111111111111111111111111111110xx : leading_1s = 29 ؛

32'b1111111111111111111111111111110x : leading_1s = 30 ؛

32'b11111111111111111111111111111110 : leading_1s = 31 ؛

32'b11111111111111111111111111111111 : leading_1s = 32 ؛

الافتراضي : leading_1s = 0 ؛

endcase / / casex (word_in)

نهاية

endmodule / / leading_ones
 

Welcome to EDABoard.com

Sponsor

Back
Top