假設我們有MSB_limit
和LSB_limit
。這兩個標記和之間的所有位之間(即使是1的 - 我認爲這簡化了問題)必須去。填寫0與1的兩個1之間(可合成)
有沒有可綜合的解決方案呢?
實施例的問題:
MSB_limit = 7;
LSB_limit = 2;
//Let's suppose our register is 16bits, desired output:
0000000011111100
^ ^^^
| | | |
15 7 2 0 //positions
鼓勵RTL /合成代碼使用'for'循環嗎?爲什麼有人會選擇這種風格與其他2個答案? (優點,缺點等) – user2692669 2014-11-21 01:35:26
For循環用於RTL,並且可以在靜態展開時合成。與移位操作員相比,傾向於使用少量門和更好的時間。複製只適用於常量(例如:LSB/MSB_limit是參數)。通過動態限制,for循環允許合成器決定使用組合解碼或移位寄存器。這取決於合成器的智能。在我的工作中,允許移動和複製以及靜態限制。動態限制首選For-Loop。嘗試所有的方法,並使用最適合您要求的方法。 – Greg 2014-11-21 02:01:48