//32位二進位制數轉bcd碼(基本思想是逢十進1)
module bin_bcd_4 (clk, a,bww,bqw,baw,bsw, bw, bq, bb, bs, bg);
input clk;
input [31:0]a; //二進位制輸入資料
output [3:0]bww,bqw,baw,bsw,bw, bq, bb, bs, bg;//bcd資料輸出暫存器
reg [3:0]bww,bqw,baw,bsw,bw, bq, bb, bs, bg;
integer i;
reg [35:0]temp;
reg [31:0]c;
always @ (posedge clk)
begin
c=a;
temp=0;
for (i=1; i<32; i=i+1)
begin
=;//左移一位
if (temp[3:0]>4'b0100)
begin
temp[3:0]=temp[3:0]+3; // >4則加3
end
if (temp[7:4]>4'b0100)
begin
temp[7:4]=temp[7:4]+3;
end
if (temp[11:8]>4'b0100)
begin
temp[11:8]=temp[11:8]+3;
end
if (temp[15:12]>4'b0100)
begin
temp[15:12]=temp[15:12]+3;
end
if (temp[19:16]>4'b0100)
begin
temp[19:16]=temp[19:16]+3;
end
if (temp[23:20]>4'b0100)
begin
temp[23:20]=temp[23:20]+3;
end
if (temp[27:24]>4'b0100)
begin
temp[27:24]=temp[27:24]+3;
end
if (temp[31:28]>4'b0100)
begin
temp[31:28]=temp[31:28]+3;
end
if (temp[35:32]>4'b0100)
begin
temp[35:32]=temp[35:32]+3;
end
=;end
endendmodule
二進位製碼轉BCD碼
在微控制器裡面,如 顯示個溫度值,這時,要取乙個數的個位 十位 百位,可以用 和 求商和求餘 來解決。但是,在fpga裡面用求商和求餘將會非常消耗資源,這樣就必須用到二進位制轉bcd碼了,這裡介紹一種簡單的加3移位演算法。注 b代表二進位制,d代表十進位制,0x代表十六進製制,bcd 為bcd 碼,...
32位的二進位制數
給出乙個小於2 32的正整數。這個數可以用乙個32位的二進位制數表示 不足32位用0補足 我們稱這個二進位制數的前16位為 高位 後16位為 低位 將它的高低位交換,我們可以得到乙個新的數。試問這個新的數是多少 用十進位制表示 例如,數1314520用二進位制表示為0000 0000 0001 01...
交替位二進位制數
題目 給定乙個正整數,檢查他是否為交替位二進位制數 換句話說,就是他的二進位制數相鄰的兩個位數永不相等。示例 1 輸入 5 輸出 true 解釋 5的二進位制數是 101示例 2 輸入 7 輸出 false 解釋 7的二進位制數是 111思路 位運算得到二進位制,在運算過程中將前一位與當前位做異或 ...