lcytms 发表于 2016-11-7 22:23:40

本帖最后由 lcytms 于 2016-11-7 22:25 编辑

新建top.v顶层模块,将以上三个模块都加入到top.v顶层模块中进行例化。
将top.v模块设置为顶层模块。
编写top.v模块如下。
module top (clk, rst_n, key1, key2, sel, seg);

        input clk, rst_n;
        input key1, key2;
       
        output sel;
        output seg;
       
        wire key_out1, key_out2;
        wire data;

        key_flag k1 (.clk(clk), .rst_n(rst_n), .key_n(key1), .key_out(key_out1));
        key_flag k2 (.clk(clk), .rst_n(rst_n), .key_n(key2), .key_out(key_out2));
       
        key_counter #(.CNT_NUM(20))
                c1 (.clk(clk), .rst_n(rst_n), .key1(~key_out1), .key2(~key_out2), .data(data));       
       
        seg7 s1 (.clk(clk), .rst_n(rst_n), .data(data), .sel(sel), .seg(seg));

endmodule

lcytms 发表于 2016-11-7 22:26:03

参照.tcl文件设置好FPGA管脚

参照EP4CE10F17C8Nzx_1.tcl文件内容,对FPGA芯片管脚进行设置。

EP4CE10F17C8Nzx_1.tcl文件相关内容如下所示。FPGA芯片配置结果如图所示。

      #set_global_assignment -name FAMILY "Cyclone IV"
      #set_global_assignment -name DEVICE ep4ce10f17c8n

set_location_assignment PIN_E1    -to    clk         
       
# KEY 轻触按键
set_location_assignment PIN_L3    -to   key         
set_location_assignment PIN_L1    -to   key         
set_location_assignment PIN_J6    -to   key         

# SEG7 x 8 七段数码管
set_location_assignment PIN_L6    -to   sel
set_location_assignment PIN_N6    -to   sel
set_location_assignment PIN_M7    -to   sel
set_location_assignment PIN_T11   -to   seg   
set_location_assignment PIN_T10   -to   seg   
set_location_assignment PIN_T9    -to   seg   
set_location_assignment PIN_T8    -to   seg   
set_location_assignment PIN_T7    -to   seg   
set_location_assignment PIN_T6    -to   seg   
set_location_assignment PIN_T5    -to   seg   
set_location_assignment PIN_T4    -to   seg
   

lcytms 发表于 2016-11-7 22:29:26

.sof文件下载到FPGA
全编译FPGA工程,生成.sof文件,连接至芯ZX-1开发板并上电。
打开Programmer通过Jtag口,将.sof文件下载到FPGA进行在线仿真。
.sof文件下载界面如下图所示。

lcytms 发表于 2016-11-7 22:30:29

本帖最后由 lcytms 于 2016-11-7 22:33 编辑

开发板运行效果
开发板运行效果如下图所示。
经检查,开发板运行效果与设计相符。

程序下载后,6个数码管根据加一减一按键操作,循环显示模20的数据000000~000013,与设计要求一致。

lcytms 发表于 2016-11-7 22:34:31

好了,今天的课程就讲到这里。
通过今天的课程,我们学习了按键计数的基本原理,并对按键计数逻辑电路进行了建模、仿真。
最后,结合第六讲的单独按键消抖和第四讲的数码管一起编写一个完整的演示逻辑,进行了下板检查。
希望大家掌握按键计数(加一或者减一)的基本原理,并熟练运用Verilog语言编写驱动逻辑。
更复杂的知识和技巧我们将逐步通过后面的课程展现给大家。

课程到此结束,谢谢大家的关注!

zxopen08 发表于 2016-11-9 09:16:00

FPGA初级课程第八讲 按键计数(加一或者减一)

辉煌 发表于 2016-11-14 11:05:50

谢谢分享:lol:lol:lol

芙蓉王 发表于 2016-11-14 16:44:52

                                    :):):)

Blondie 发表于 2016-11-16 15:41:10

                           :):):)

Sunlife 发表于 2016-11-16 16:19:36

               感谢分享
页: 1 [2] 3
查看完整版本: FPGA初级课程第八讲 按键计数(加一或者减一)