当前位置: 首页> 教育> 就业 > 我的FPGA

我的FPGA

时间:2025/7/15 1:00:31来源:https://blog.csdn.net/jshgz8/article/details/140280773 浏览次数:0次

1.安装quartus

2.更新usb blaster驱动

3.新建工程

1.随便找一个文件夹,里面新建demo文件夹,表示一个个工程

在demo文件夹里面,新建src(源码),prj(项目),doc(文档)

2.进去quartus里面,点击new project

 

下面是你的fpga开发板的配置,包括Pin count,Core speed grade 

打开工程

"D:\Desktop\fpga\demo2\prj\demo2.qsf"

4.在src文件夹下写.v文件

// demo.v
module demo (// 不写类型,默认wire型input       clk,output      led
);// 让led是高电平工作assign led=1;
endmodule

5.启动文件

找寻.v文件

开始编译 

绑定led和灯

重新编译

点击Device and Pin Options

 

点击Hardware Setup ,换成usb blaster

 点击start启动

5.Verilog语法

常量说明:每一个变量的值就是0或者1

变量定义:

        wire:在module中input和output后的变量默认是wire型

        rag:如果在always中,才会使用rag

连续赋值:

        assign:(主要用于组合逻辑电路)

        always:(主要用于时序逻辑电路)

6.实例

启动一个灯

module demo (input       clk,output      led
);assign led=1;endmodule

启动多个灯

module demo (input       clk,output [3:0] led
);assign led=4'b1010;endmodule

流水灯

/*
assign,always都是同时进行的
*/
module demo (input       clk,input       rst_n, // 复位output reg [3:0] led
);// 开始wire add_cnt_500ms;assign add_cnt_500ms=1'b1;// 结束wire end_cnt_500ms;reg [24:0] cnt_500ms;assign end_cnt_500ms=add_cnt_500ms&&(cnt_500ms==25_000_000-1);// 计数always @(posedge clk or negedge rst_n) begin// 刚开始才会执行该ifif(!rst_n)begin cnt_500ms<=0;endelse if(add_cnt_500ms)beginif(end_cnt_500ms)begincnt_500ms<=0;endelse begincnt_500ms<=cnt_500ms+1;endendend// 跳灯(移位实现)// always @(posedge clk or negedge rst_n) begin//     if(!rst_n) begin//         led=4'b1000//     end//     else if(led==4'b0001)begin//         led<=4'b1000//     end//     else if(end_cnt_500ms) begin//         led<=(led>>1)//     end// end// 挑灯(拼接实现)always @(posedge clk or negedge rst_n) beginif(!rst_n)beginled<=4'b1000;endelse if(end_cnt_500ms)beginled<={led[0],led[3:1]};endend
endmodule

关键字:我的FPGA

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

责任编辑: