首先開門見山的回答這個問題——LUT的作用是 實現(xiàn)所有的邏輯函數(shù) ,也就是類似于計算Y=A&B+C+D之類的算式結(jié)果!
LUT是什么構(gòu)成的?
xilinx的LUT是4輸入1輸出的 RAM ,也就是4根地址線的,一根數(shù)據(jù)線的RAM,并且I1是高地址位,I4是低地址位,樣子參考下圖。I1到I4就是地址線,O是輸出數(shù)據(jù)線。
RAM怎么實現(xiàn)邏輯運算?
假設要實現(xiàn)運算Y=A&B+C+D。假設I1代表A,I2代表B,I3代表C,I4代表D,O代表Y。此時將下表存入LUT中。從下表可以看出,LUT存儲的就是函數(shù)Y=A&B+C+D的真值表。 **4個輸入信號的地址對應的位置上存儲的就是4個地址進行邏輯運算后的真值!** 這樣任何4輸入的所有邏輯運算都可以通過存取真值表的方法實現(xiàn)。一旦輸入地址中的任何一個數(shù),立馬就會輸出存儲位置上對應的結(jié)果。
地址(I[4:0]) | 存儲值(I1&I2+I3+I4的運算結(jié)果) |
---|---|
0000 | 0 |
0001 | 1 |
0010 | 1 |
0011 | 1 |
0100 | 0 |
0101 | 1 |
0110 | 1 |
0111 | 1 |
1000 | 0 |
1001 | 1 |
1010 | 1 |
1011 | 1 |
1100 | 1 |
1101 | 1 |
1110 | 1 |
1111 | 1 |
verilog怎么實現(xiàn)上面的函數(shù)呢?
reg Y;
reg [3:0] I ;
always@(*)begin Y=(I[0] & I1) | I2 | I3;end
請注意( )里面是 ,代表不需要時鐘,實現(xiàn)的是組合邏輯。如果最后一行變成如下:
always@(posedge clk)begin Y=(I[0] & I1) | I2 | I3;end
則生成的不是一個LUT是一個LUT加一個觸發(fā)器FF。
-
RAM
+關注
關注
8文章
1364瀏覽量
114445 -
Xilinx
+關注
關注
71文章
2155瀏覽量
120854 -
數(shù)據(jù)線
+關注
關注
8文章
280瀏覽量
37655 -
LUT
+關注
關注
0文章
49瀏覽量
12475
發(fā)布評論請先 登錄
相關推薦
評論