請原諒: **還沒有寫完,後面一定補上
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什麼的可以表示 大學也學過,不過已經忘了。一 二進位制數轉換成十進位制數 由二進位制數轉換成十進位制數的基本做法是,把二進位制數首先寫成加權係數展開式,然後按十進位制加法規則求和。這種...