VIVADOは、プロジェクトセットウォーターライトを作成します
1.概要
まず、FPGAプロジェクトを作成Verilogコードを記述し、その後、ピン制約を追加し、最後にコンパイルされ、結果のビットファイルが開発ボードにダウンロード。実験後、FPGA開発ボードのオフ、ビットファイルが消えます。あなたは電気基板を開発するためのプログラムを実行できることを確認したい場合は、ビンまたはMCSファイルにパッケージ化した後、FLASH缶に硬化されたビットファイルを取る必要があります。この方法の詳細については後述します。
2、ハードウェアの回路図
3、Verilogのプロジェクトコードrun_led.v
モジュールはRUN_LED(//入力変数と出力変数を定義します
入力CLK_I、
入力RSTn_i、
出力REG [3:0] LED_o
);
REG [31:0] C0; //時間変数を設定します
常に@(posedge CLK_I)//立ち上がりエッジでトリガ
(!RSTn_i)場合//リセットしません
ベギン
LED_o <= 4'b1; //は次のように初期化し、最初の位置を率い1
C0 <= 32'h0; //初期化変数C0ゼロ
終わり
他
ベギン
(C0 == 32'd50_000_000)// C0この番号に蓄積し、もし
ベギン
C0<=32'h0; //C0清零
if(LED_o ==4'b1000) //当LED只有第四位为1时
LED_o<=4'b1; //LED移位,只有第一位为1
else
LED_o<=LED_o<<1; //LED的1左移一位
end
else
begin
C0<=C0 + 1'b1; //C0累加1
LED_o <= LED_o;
end
end
endmodule
4、 约束文件代码fpga_pin.xdc
create_clock -period 10.000 -name CLK_i [get_ports CLK_i] //创建一个始终,周期为10
set_property PACKAGE_PIN H16 [get_ports CLK_i] //管脚约束 时钟引脚
set_property IOSTANDARD LVCMOS33 [get_ports CLK_i] //电平约束 LVCMOS电平标准:
//所有引脚号都与原理图一一对应
set_property PACKAGE_PIN T19 [get_ports RSTn_i] //复位引脚
set_property IOSTANDARD LVCMOS33 [get_ports RSTn_i]
set_property PACKAGE_PIN J16 [get_ports {LED_o[0]}] //led灯的配置
set_property PACKAGE_PIN K16 [get_ports {LED_o[1]}]
set_property PACKAGE_PIN G15 [get_ports {LED_o[2]}]
set_property PACKAGE_PIN H15 [get_ports {LED_o[3]}]
set_property IOSTANDARD LVCMOS33 [get_ports {LED_o[*]}] //led灯电平标准
#bit compress //压缩
set_property BITSTREAM.GENERAL.COMPRESS TRUE [current_design] //板卡配置电压约束
set_property CFGBVS VCCO [current_design] //CFGBVS管脚连接至上拉电压VCCIO(3.3V)
set_property CONFIG_VOLTAGE 3.3 [current_design] // //配置电压也连接至3.3V
5、 感悟
FPGA学习感觉根单片机学习很像,都需要读懂原理图,有一定的编程思维。C语言编程都是先寻找一个个子零件,慢慢拼凑,最后拼成一个大零件,从而实现某个功能,编程思想是从底层出发慢慢走向顶层。Verilog编程恰恰相反,它是从顶层出发,发现此时需要什么,再去寻找什么,最后把底层都找到。