FPGA 十進位制 轉化為二進位制

2021-10-12 03:02:15 字數 1751 閱讀 8418

請原諒: **還沒有寫完,後面一定補上

module operation(

input clk ,

input rst_n,

output reg [3:0] num_add,

output reg [3:0] num_sub,

output reg [6:0] num_mul,

output reg [3:0] num_div,

output reg [3:0] num_rem,

output reg [9:0] num_bin

);reg [3:0] num1;

reg [3:0] num2;

reg [9:0] bin_num;

reg [3:0] cnt;

reg [9:0] ans;

// 加減乘除四則運算

always@(posedge clk or negedge rst_n)begin

if(!rst_n)begin

num1<=4'd8;

num2<=4'd2;

end

else begin

num_add<=num1+num2;

num_sub<=num1-num2;

num_mul<=num1*num2;

num_rem<=num1%num2;

num_div<=num1/num2;

end

end

// 十進位制如何轉化為二進位制, 二進位制的最開始的餘數為低位,後面得到的餘數為高位,利用拼接的方法

always@(posedge clk or negedge rst_n)begin

if(!rst_n)begin

bin_num<=10'b0;

cnt<=4'd0;

ans<= ;

end

else begin

<=

end

end

endmodule

驗證**:

`timescale 1ns/1ns

module operation_tb();

reg clk;

reg rst_n;

wire [3:0] num_add;

wire [3:0] num_sub;

wire [6:0] num_mul;

wire [3:0] num_div;

wire [3:0] num_rem;

parameter t=20;

initial begin

clk=1'b0;

rst_n=1'b0;

#20 rst_n = 1'b1; //在第20ns的時候復位訊號訊號拉高

#1000

$stop;

end

always#(t/2) clk<=~clk;

operation operation_v1(

.clk (clk),

.rst_n (rst_n),

.num_add (num_add),

.num_sub (num_sub),

.num_mul (num_mul),

.num_div (num_div),

.num_rem (num_rem));

endmodule

十進位制轉化為二進位制

今天我們來實現乙個有趣的小案例。要求 任意輸入乙個正十進位制數把它轉化為二進位制數輸出。我這裡使用了遞迴演算法 def transit num,binary 十進位制轉化為二進位制 param num 輸入的10進製 return none if num 2 remainder num 2 num ...

13 3十進位制轉化為二進位制

05.檔名稱 07.完成日期 2013年 11月 08.版本號 v1.0 09.對任務及求解方法的描述部分 遞迴 10.輸入描述 十進位制 11.問題描述 遞迴法做二進位制轉換 12.程式輸出 二進位制 13.問題分析 像張玉老師說的像剝洋蔥先找到芯,在寫出第n 1或n 1與n 2與第n項的關係就很...

十進位制小數轉化為二進位制小數

轉了這篇文章,完全是群裡討論計算機無法精確表示小數才想找一下原因的。究其原因就是十進位制小數無法用2進製表示 0.5什麼的可以表示 大學也學過,不過已經忘了。一 二進位制數轉換成十進位制數 由二進位制數轉換成十進位制數的基本做法是,把二進位制數首先寫成加權係數展開式,然後按十進位制加法規則求和。這種...