一:FPGA从入门倒入坟-第一个基础实例蜂鸣器

声明

本小白使用的是***Xilinx Spartan6***系列的开发板,教程是特权同学提供的PDF文档教程,因此会有所错误。对于软件的安装真卷,,,,表示不想进行第二次安装。
本人小白,大佬轻锤。

代码

逻辑代码(.V文件)

module BuzzerTest(		//定义蜂鸣器测试模块
    input ext_clk_25m,	//设置输入变量(系统时钟变量)
    input ext_rst_n,	//设置复位变量(系统复位变量)
    output reg buzzer	//设置输出变量(寄存器类型)
    );
	
reg [19:0] count;		//设置寄存器类型变量,设置类型为20位,可以计数最大数值位2^20
									
//创造一个系统时钟,即对25m系统时钟进行1 000 000分频,即一个计数器count对应25 000 000 / 1 000 000 = 25hz
always @ (posedge ext_clk_25m or negedge ext_rst_n)		//始终等待系统时钟的上升沿或者复位时钟的下降沿
	if(!ext_rst_n) count <= 20'd0;						//如果系统复位信号为低电平,即电路板未上电,则将20位寄存器类型的变量count置为0,即低电平
	else if(count < 20'd999_999) count <= count + 1'b1;	//如果20位寄存器变量计数到十进制的999_999实际上是计数到1_000_000,则20位计数器以二进制的形式加一
	else count <= 20'd0;								//否则将寄存器归零
	
always @ (posedge ext_clk_25m or negedge ext_rst_n)		//始终等待系统时钟的上升沿或者复位时钟的下降沿
	if(!ext_rst_n) buzzer <= 1'b0;						//如果系统复位端电平位低电平,即电路板未上电,则将buzzer端电平置低,即buzzer不使能。
	else if(count < 20'd500_000) buzzer <= 1'b1;		//如果计数器计数时间小于十进制500_000,则将buzzer使能
	else buzzer <= 1'b0;								//否则buzzer不使能


endmodule

端口约束文件(.UCF文件)

NET "ext_clk_25m"	LOC = P23	|	IOSTANDARD = LVCMOS33;
NET "ext_rst_n"		LOC = P24	|	IOSTANDARD = LVCMOS33;

NET "buzzer"		LOC = P27	|	IOSTANDARD = LVCMOS33;

相关程序关键字解释

input:定义输入端口
output:定义输出端口
reg :寄存器类型定义,wire输入直接导致输出的变化;reg一般得有时序触发,输入端口的值不一定立刻反应到输出上,因此一般可以理解为锁存器的工作类型。wire只能被assign连续赋值,reg只能在initial和always中赋值。
reg [19:0] count;设置寄存器类型变量,设置类型为20位,可以计数最大数值位2^20,寄存器从0到19为20位寄存器。
NET “IOname” LOC = P23 | IOSTANDARD = LVCMOS33;定义变量的逻辑接口和电平标准

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值