先給大家出一個(gè)題目:當(dāng)x為5時(shí),y=x << 6 + x <<3 + x << 2 + x的結(jié)果為多少,即y的值是多少?
我先不給出答案,先貼上正確的運(yùn)算符優(yōu)先級(jí)順序,如下圖所示:
俗話說溫故而知新,今天回顧一下verilog的運(yùn)算符的優(yōu)先級(jí)。
說一下回顧這個(gè)原因:今天打算用verilog實(shí)現(xiàn)一個(gè)乘法器,即:y=77*x。為了加快運(yùn)算時(shí)間,將77轉(zhuǎn)換為二級(jí)制(1001101),然后使用了移位寄存器來實(shí)現(xiàn)乘法運(yùn)算,具體代碼如下:y=x << 6 + x <<3 + x << 2 + x。但是仿真結(jié)果不對(duì),仿真結(jié)果為0的概率比較大。之前還以為是x的位寬太小導(dǎo)致的,但是修改位寬之后還是不行,所以又重新審視了一下這段代碼,懷疑是運(yùn)行操作符的優(yōu)先級(jí)有問題導(dǎo)致的,查閱書籍發(fā)現(xiàn)確實(shí)是這樣的:加法的優(yōu)先級(jí)高于左移運(yùn)算,導(dǎo)致先進(jìn)行加法運(yùn)算再進(jìn)行移位運(yùn)算,所以結(jié)果和預(yù)期不一致。
實(shí)際上,要實(shí)現(xiàn)y=77*x運(yùn)算,正確的verilog代碼如下:y=(x << 6)+(x <<3)+(x << 2)+ x。
所以說,剛開始給出題目的答案不是我不給出,實(shí)際上按照正確優(yōu)先級(jí)計(jì)算的結(jié)果沒有太多的意義。
審核編輯:湯梓紅
-
Verilog
+關(guān)注
關(guān)注
28文章
1351瀏覽量
110100 -
乘法器
+關(guān)注
關(guān)注
8文章
205瀏覽量
37060 -
運(yùn)算符
+關(guān)注
關(guān)注
0文章
172瀏覽量
11084
原文標(biāo)題:考題
文章出處:【微信號(hào):FPGA雜記,微信公眾號(hào):FPGA雜記】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論