デジタル部品設計実験1:Verilog言語を用いて4ビットのALU演算ユニットを実現する
3963 ワード
Verilog言語で4ビットのALU演算ユニットを実現実験内容 が実現すべき機能 設計構想 拘束ファイル テスト 最後の 設計構想は主にここから来ているが、原文の乗算実現にはいくつかの小さな問題があり、私はいくつかの修正をした.
実験内容
算術論理ユニット入力信号を設計する:A B 2群4ビット入力信号(A 3~A 0,B 3~B 0)出力信号:F 1群8ビット出力信号(F 7~F 0)
必要な機能
機能は以下の表に示す:op,A,B,Fの機能表:
op
function
00
F=A+B
01
F=A - B
10
F=~A
11
F=A*B
注:加算器も減算器もハーフ加算器で、キャリー入力Cinは考慮されませんが、キャリー出力Countは考慮されます.
せっけい構想
入力信号と出力信号をA,Bに存在させ,opはオペレータを格納し,入力はFで表す.ALUの実装はcase文を用い,加算と減算はコンピュータ内蔵の演算で実現し,乗算は単独で関数を1つ書いて実現する.設計元ファイルのコードは次のとおりです.
コンストレイントファイル
私はvivadoで書いたコードで、テストは直接これでしたが、制約ファイルが必要です.制約ファイルの書き方はいろいろあります.次は私が書いたものです.
A[0]~A[3]およびB[0]-B[3]は入力信号、op[0]-op[1]はオペレータ、F[0]-F[7]は出力信号である.
テスト
次に,実験ボード(もしあればシミュレーション操作は行わないが,ここではあまり述べない)とコンピュータを接続し,ビットストリームを生成して実験版にダウンロードしてテストを行い,実験ボード上の効果図は以下の通りである(乗算の実験効果,例は1001*101=10111).
最後に
この実験は比较的简単で、この时间はデジタル部品の设计を学んで、前に借りた文章をすべて返すつもりで、だから最近ずっとデジタル部品の関连する文章を书いて、もちろん、その他の面白い技术もあって、最近Pythonの考えを学ぶことは何もなくて、作业と実験のため多すぎて、あとはなるべく週に1回くらい書きますが(前に借りたものを補って、補ってから時間を見ます)、結局自分は人と知識を共有するのが好きです.最後の最後に、CSEの大物はいますか、これは南すぎます.
実験内容
算術論理ユニット入力信号を設計する:A B 2群4ビット入力信号(A 3~A 0,B 3~B 0)出力信号:F 1群8ビット出力信号(F 7~F 0)
必要な機能
機能は以下の表に示す:op,A,B,Fの機能表:
op
function
00
F=A+B
01
F=A - B
10
F=~A
11
F=A*B
注:加算器も減算器もハーフ加算器で、キャリー入力Cinは考慮されませんが、キャリー出力Countは考慮されます.
せっけい構想
入力信号と出力信号をA,Bに存在させ,opはオペレータを格納し,入力はFで表す.ALUの実装はcase文を用い,加算と減算はコンピュータ内蔵の演算で実現し,乗算は単独で関数を1つ書いて実現する.設計元ファイルのコードは次のとおりです.
module ALU_4bit(
F, A, B, op, EN
);
input [3:0] A, B; //
input [1:0] op;//
input EN; //EN=1
output reg[7:0] F;//
always @(*)
begin
if(!EN)
F = 8'B0;
else
ALUtask(A, B, op, F);
end
task ALUtask;
input [3:0] A, B;
input [1:0] op;
output reg[7:0] F;
begin
case(op)
2'B00:F = A + B;
2'B01:F = A - B;
2'B10:F = ~A;
2'B11:F = multi(A, B);//
endcase
end
endtask
//function multi
function [7:0]multi; //
input [3:0] A, B;
reg [7:0] count;
integer i;
begin
count = 0;
for(i = 0; i < 4; i = i+1)
begin
if(A[i])
count = count + (B<
コンストレイントファイル
私はvivadoで書いたコードで、テストは直接これでしたが、制約ファイルが必要です.制約ファイルの書き方はいろいろあります.次は私が書いたものです.
# Nexys4 Pin Assignments
############################
# On-board Slide Switches #
############################
set_property PACKAGE_PIN J15 [get_ports {A[0]}]
set_property IOSTANDARD LVCMOS33 [get_ports {A[0]}]
set_property PACKAGE_PIN L16 [get_ports {A[1]}]
set_property IOSTANDARD LVCMOS33 [get_ports {A[1]}]
set_property PACKAGE_PIN M13 [get_ports {A[2]}]
set_property IOSTANDARD LVCMOS33 [get_ports {A[2]}]
set_property PACKAGE_PIN R15 [get_ports {A[3]}]
set_property IOSTANDARD LVCMOS33 [get_ports {A[3]}]
set_property PACKAGE_PIN R17 [get_ports {B[0]}]
set_property IOSTANDARD LVCMOS33 [get_ports {B[0]}]
set_property PACKAGE_PIN T18 [get_ports {B[1]}]
set_property IOSTANDARD LVCMOS33 [get_ports {B[1]}]
set_property PACKAGE_PIN U18 [get_ports {B[2]}]
set_property IOSTANDARD LVCMOS33 [get_ports {B[2]}]
set_property PACKAGE_PIN R13 [get_ports {B[3]}]
set_property IOSTANDARD LVCMOS33 [get_ports {B[3]}]
set_property PACKAGE_PIN T8 [get_ports {op[0]}]
set_property IOSTANDARD LVCMOS33 [get_ports {op[0]}]
set_property PACKAGE_PIN U8 [get_ports {op[1]}]
set_property IOSTANDARD LVCMOS33 [get_ports {op[1]}]
############################
# On-board led #
############################
set_property PACKAGE_PIN H17 [get_ports F[0]]
set_property IOSTANDARD LVCMOS33 [get_ports F[0]]
set_property PACKAGE_PIN K15 [get_ports F[1]]
set_property IOSTANDARD LVCMOS33 [get_ports F[1]]
set_property PACKAGE_PIN J13 [get_ports F[2]]
set_property IOSTANDARD LVCMOS33 [get_ports F[2]]
set_property PACKAGE_PIN N14 [get_ports F[3]]
set_property IOSTANDARD LVCMOS33 [get_ports F[3]]
set_property PACKAGE_PIN R18 [get_ports F[4]]
set_property IOSTANDARD LVCMOS33 [get_ports F[4]]
set_property PACKAGE_PIN V17 [get_ports F[5]]
set_property IOSTANDARD LVCMOS33 [get_ports F[5]]
set_property PACKAGE_PIN U17 [get_ports F[6]]
set_property IOSTANDARD LVCMOS33 [get_ports F[6]]
set_property PACKAGE_PIN U16 [get_ports F[7]]
set_property IOSTANDARD LVCMOS33 [get_ports F[7]]
A[0]~A[3]およびB[0]-B[3]は入力信号、op[0]-op[1]はオペレータ、F[0]-F[7]は出力信号である.
テスト
次に,実験ボード(もしあればシミュレーション操作は行わないが,ここではあまり述べない)とコンピュータを接続し,ビットストリームを生成して実験版にダウンロードしてテストを行い,実験ボード上の効果図は以下の通りである(乗算の実験効果,例は1001*101=10111).
最後に
この実験は比较的简単で、この时间はデジタル部品の设计を学んで、前に借りた文章をすべて返すつもりで、だから最近ずっとデジタル部品の関连する文章を书いて、もちろん、その他の面白い技术もあって、最近Pythonの考えを学ぶことは何もなくて、作业と実験のため多すぎて、あとはなるべく週に1回くらい書きますが(前に借りたものを補って、補ってから時間を見ます)、結局自分は人と知識を共有するのが好きです.最後の最後に、CSEの大物はいますか、これは南すぎます.