首先開門見山的回答這個問題——LUT的作用是 實現所有的邏輯函數 ,也就是類似于計算Y=A&B+C+D之類的算式結果!
LUT是什么構成的?
xilinx的LUT是4輸入1輸出的 RAM ,也就是4根地址線的,一根數據線的RAM,并且I1是高地址位,I4是低地址位,樣子參考下圖。I1到I4就是地址線,O是輸出數據線。
RAM怎么實現邏輯運算?
假設要實現運算Y=A&B+C+D。假設I1代表A,I2代表B,I3代表C,I4代表D,O代表Y。此時將下表存入LUT中。從下表可以看出,LUT存儲的就是函數Y=A&B+C+D的真值表。 **4個輸入信號的地址對應的位置上存儲的就是4個地址進行邏輯運算后的真值!** 這樣任何4輸入的所有邏輯運算都可以通過存取真值表的方法實現。一旦輸入地址中的任何一個數,立馬就會輸出存儲位置上對應的結果。
地址(I[4:0]) | 存儲值(I1&I2+I3+I4的運算結果) |
---|---|
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怎么實現上面的函數呢?
reg Y;
reg [3:0] I ;
always@(*)begin Y=(I[0] & I1) | I2 | I3;end
請注意( )里面是 ,代表不需要時鐘,實現的是組合邏輯。如果最后一行變成如下:
always@(posedge clk)begin Y=(I[0] & I1) | I2 | I3;end
則生成的不是一個LUT是一個LUT加一個觸發器FF。
-
RAM
+關注
關注
8文章
1368瀏覽量
114647 -
Xilinx
+關注
關注
71文章
2167瀏覽量
121306 -
數據線
+關注
關注
8文章
283瀏覽量
37719 -
LUT
+關注
關注
0文章
49瀏覽量
12502
發布評論請先 登錄
相關推薦
評論