簡介:
反正切函數(shù)(arctan)在逆運(yùn)動(dòng)學(xué)等算法(已知機(jī)械臂末端位置坐標(biāo),反求 其每個(gè)關(guān)節(jié)角度的一種算法)中有較多應(yīng)用,因 FPGA 對于浮點(diǎn)運(yùn)算、開方、三 角函數(shù)等計(jì)算極不擅長,而在很多比賽項(xiàng)目中又會(huì)用到相關(guān)算法,因此這里給出 反正切函數(shù)的 Verilog 實(shí)現(xiàn),以方便讀者使用機(jī)械臂在“定點(diǎn)夾取 ”方面的應(yīng)用。
實(shí)現(xiàn)功能:
此模塊實(shí)現(xiàn)用 Verilog 代碼描述出反正切函數(shù)。
實(shí)現(xiàn)原理:
由于筆者不懂基于 cordic 算法的反三角函數(shù)的 Verilog 的實(shí)現(xiàn),實(shí)現(xiàn)原理部分只進(jìn)行模塊使用的詳細(xì)說明,具體轉(zhuǎn)換原理讀者可自行查閱相關(guān)資料。下面對模塊的使用做詳細(xì)說明:
模塊輸入的 x 與 y 的值,是指對于平面坐標(biāo)系,目標(biāo)點(diǎn)對于 y 軸和 x 軸的距離。輸出的 atan 值為目標(biāo)點(diǎn)與坐標(biāo)系原點(diǎn)連線與 x 軸的夾角,即的值。
接口說明:
仿真:
這里我們輸入的 x 和 y 的值分別為173、100。對應(yīng)著的角度值應(yīng)為30 °, atan 的輸出值為16進(jìn)制的 1E,也就是 30