nexys4-DDR開發板數碼管驅動-第二篇


1. 有這個板子使用的是Artix-7系列的XC7A100T-1CSG324C芯片。作為7系列中的一款FPGA,這個芯片的結構與Kintex-7和Virtex-7幾乎一樣。也配備了XADC。在Artix-7系列中,100T和200T與其它芯片不同,這兩款是ISE與Vivado同時支持的芯片,而更小的35T,50T和75T,ISE的支持會相對差一些。從這個角度說,100T的可玩性比較大。這也是Nexys-4比Avnet Artix-5 50T板子要好一些的地方。

2. 打算用數碼管驅動測試一下。打開vivado2014.2軟件,創建工程

3. 增加文件,shumaguan.v,代碼比較簡單。

 1 `timescale 1ns / 1ps
 2 module shumaguan(seg,dig,clock,);
 3     input clock;
 4     output [7:0] seg; //數碼管段碼輸出
 5     output [3:0] dig; //數碼管位碼輸出
 6     reg [7:0] seg; //數碼管段碼輸出寄存器
 7     reg [3:0] dig; //數碼管位碼輸出寄存器
 8     reg [3:0] disp_dat; //顯示數據寄存器
 9     reg [36:0] count; //定義計數寄存器
10     always @ (posedge clock )
11     begin 
12      count = count + 1'b1;
13      dig= 8'b1110;//
14     end
15     always @ (count[24])
16     begin
17     disp_dat = {count[28:25]};
18     end
19     always @ (disp_dat)
20     begin case (disp_dat)
21     4'h0 : seg = 8'hc0; //顯示"0"
22     4'h1 : seg = 8'hf9; //顯示"1"
23     4'h2 : seg = 8'ha4; //顯示"2"
24     4'h3 : seg = 8'hb0; //顯示"3"
25     4'h4 : seg = 8'h99; //顯示"4"
26     4'h5 : seg = 8'h92; //顯示"5"
27     4'h6 : seg = 8'h82; //顯示"6"
28     4'h7 : seg = 8'hf8; //顯示"7"
29     4'h8 : seg = 8'h80; //顯示"8"
30     4'h9 : seg = 8'h90; //顯示"9"
31     4'ha : seg = 8'h88; //顯示"a"
32     4'hb : seg = 8'h83; //顯示"b"
33     4'hc : seg = 8'hc6; //顯示"c"
34     4'hd : seg = 8'ha1; //顯示"d"
35     4'he : seg = 8'h86; //顯示"e"
36     4'hf : seg = 8'h8e; //顯示"f"
37     endcase
38     end
39 endmodule

4. 先點擊Simulation功能仿真,然后Synthesis綜合,綜合完之后,在Implementation下面Implemented Design會從灰色切換到可點擊狀態。

5. 看下器件的內部結構圖,大致分為8個區域

6. 放大看下內的結構,這個有時間要研究下了。感覺是技術核心。

7. 配置引腳,打開I/O Ports這個界面,在site欄選擇需要的引腳,電平選擇LVCOMS33,看下原理圖

8. 看下引腳對應的

 1 ## 7 segment display
 2 #NET "ca"             LOC=T10 | IOSTANDARD=LVCMOS33; #IO_L24N_T3_A00_D16_14
 3 #NET "cb"             LOC=R10 | IOSTANDARD=LVCMOS33; #IO_25_14
 4 #NET "cc"             LOC=K16 | IOSTANDARD=LVCMOS33; #IO_25_15
 5 #NET "cd"             LOC=K13 | IOSTANDARD=LVCMOS33; #IO_L17P_T2_A26_15
 6 #NET "ce"             LOC=P15 | IOSTANDARD=LVCMOS33; #IO_L13P_T2_MRCC_14
 7 #NET "cf"             LOC=T11 | IOSTANDARD=LVCMOS33; #IO_L19P_T3_A10_D26_14
 8 #NET "cg"             LOC=L18 | IOSTANDARD=LVCMOS33; #IO_L4P_T0_D04_14
 9 #NET "dp"             LOC=H15 | IOSTANDARD=LVCMOS33; #IO_L19N_T3_A21_VREF_15
10 
11 #NET "an<0>"          LOC=J17 | IOSTANDARD=LVCMOS33; #IO_L23P_T3_FOE_B_15
12 #NET "an<1>"          LOC=J18 | IOSTANDARD=LVCMOS33; #IO_L23N_T3_FWE_B_15
13 #NET "an<2>"          LOC=T9 | IOSTANDARD=LVCMOS33; #IO_L24P_T3_A01_D17_14
14 #NET "an<3>"          LOC=J14 | IOSTANDARD=LVCMOS33; #IO_L19P_T3_A22_15
15 #NET "an<4>"          LOC=P14 | IOSTANDARD=LVCMOS33; #IO_L8N_T1_D12_14
16 #NET "an<5>"          LOC=T14 | IOSTANDARD=LVCMOS33; #IO_L14P_T2_SRCC_14
17 #NET "an<6>"          LOC=K2 | IOSTANDARD=LVCMOS33; #IO_L23P_T3_35
18 #NET "an<7>"          LOC=U13 | IOSTANDARD=LVCMOS33; #IO_L23N_T3_A02_D18_14

9. 修改I/O Ports,修改完之后,Ctrl+S保存一下,會讓保存一個文件,XDC格式的。

10. 插上板子USB接口J6,等待驅動識別,點擊生成二級制文件Generate Bitstream。需要的時間比較久,耐心等待

點擊Open Target

11. 看到到的XADC,是內部的ADC嗎?生成2進制文件的時候,遇到一個錯誤

12. 網上說法是將下面保存成.tcl文件

1 set_property SEVERITY {Warning} [get_drc_checks NSTD-1]
2 set_property SEVERITY {Warning} [get_drc_checks RTSTAT-1]
3 set_property SEVERITY {Warning} [get_drc_checks UCIO-1]

再到bitstream settings做如下設置即可:

13. 最后Program Devices。不過燒寫之后,程序並沒有運行,所以我檢查了一下,跳線帽,主要是JP1和JP2的選擇,本次是用JTAG燒寫的,編程燒寫成功之后,Done燈會亮,但是不知道亮多久。Prog按鍵是按下會復位FPGA內部的配置內存,並且按照下圖的編程,重新從外置器件讀取配置信息到FPGA內部的配置內存。

14. 最后數碼管正常運行。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM