572|0

179

帖子

1

TA的资源

纯净的硅(初级)

【microchip PolarFire SoC FPGA 套件】③艰难啃下基于verilog语言的跑马灯 [复制链接]

https://bbs.eeworld.com.cn/thread-1307592-1-1.html

 

书接上回,上次跑了一个基于官方的范例,也就是个最简单的 与门 电路。

也就是这样的:按下按键1或按键2,LED1灯亮。基本学习了如何编写程序及如何烧录。

 

   image.png  

有了初步的入门,那么怎么进一步编写自己的程序呢,看到开发板上8个LED陷入沉思,何不写个跑马灯的程序呢。

 

多方查资料学习,于是就有了如下的程序。

image.png  

其中OSC_RC2MHZ_0是 Libero自带的时钟程序块(Macro Libray中)。

 

image.png  

需要说明,把选中到OSC_RC2MHZ_0选中到电路图中,需要把左端脚上拉(Tie High)

image.png  

 

cc03_0是我自编的基于verilog语言的程序,也是本文的重点。

首先新建一个 Creat HDL,选择verilog。

 

image.png  

 

要实现跑马灯就需要比较精准的时钟,我们使用了2MHz的时钟源,每1个周期是(1/2,000,000 S )要想实现1秒钟计时,就需要数数到2,000,000

LED的跑马灯效果就是通过移位来实现,RST是复位功能。

比如

00000001 向左移位1位

00000010 再向左移位1位

00000100 再向左移位1位

00001000 再向左移位1位

00010000 再向左移位1位

00100000 再向左移位1位

01000000 再向左移位1位

10000000 等到最高位是1时就恢复到最初状态

00000001

 

 

 

  

 

程序如下:

module cc03( clk,rst_n,led);

	input clk;
    input rst_n;
	output reg [6:0] led;
	reg [20:0] counter;
	
	//计数器
	always@(posedge clk)
    if(!rst_n)//低电平复位
		counter <= 0;
    else if(counter == 21'd1999999) //1秒
		counter <= 0;
	else
		counter <= counter + 1'b1;  
		
	
	always@(posedge clk)
    if(!rst_n)
		led <= 7'b0000001;
    else if(counter == 21'd1999998)begin
		if(led == 7'b1000000)
			led <= 7'b0000001;
		else
			led <= led << 1; 
	end
	else
		led <= led;


endmodule

 

  眼睑的你可能看到了,我这里LED【6:0】怎么只有7个LED,待会会提。

 

verilog程序编写完,点击Check HDL File。如果程序有错会提示:

 

image.png    

 

程序检查无误就点击 Build Hierarchy。

 

image.png  

 

将刚才编写好的cc03.v程序拖到电路图中。

置顶对应引脚(rst_n,LED 6:0)

 

Synthesize通过后,设置好对应引脚。

 

 

 

image.png  

 

 

image.png  

 

发现LED8对应的E1引脚无法选择,可能因为其是MSS(RISC-V核) I/O BANK的缘故,目前还没学会使用RISC-V核的IO,暂时就不用这个LED了。

 

最后编译下载程序就可以实现跑马灯效果了。

 

 

386ef05a6fdfc5984131e1e4868d6c7.jpg  

 

FPGA跑马灯

 

本次分享就到这里。

 

此帖出自FPGA/CPLD论坛

回复
举报
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/10 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

 
机器人开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网 7

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表