【FPGA第一天】Verilog基础与简易流水灯设计

这篇具有很好参考价值的文章主要介绍了【FPGA第一天】Verilog基础与简易流水灯设计。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。



一、Verilog基础

有关更多细节,请参考:

verilog语法基础

二、Quantus基础

1. 如何新建一个项目

1.1 新建文件夹用来存放项目文件,请注意你的文件夹路径不要有中文,不过系统自带的桌面和文档这些路径除外。
verilog怎么设置顶层文件,fpga开发
1.2 新建项目文件

prj 项目文件
rtl 寄存器转换级,用来描述各级寄存器,用来存放.v文件
tb 仿真文件
tcl tool command language,用来存放引脚的脚本
verilog怎么设置顶层文件,fpga开发
1.3 打开Quantus
File——New——new project wizard
点击“…”选择文件夹,一直到prj路径。
命名项目名称,但是上下两个名称可以不一样。
verilog怎么设置顶层文件,fpga开发

选择空模板。

选择芯片
verilog怎么设置顶层文件,fpga开发

设置仿真界面。
verilog怎么设置顶层文件,fpga开发
一般来说我们可以选择。
verilog怎么设置顶层文件,fpga开发
最后一步,界面总览。
verilog怎么设置顶层文件,fpga开发
当然,你也可以选择编写程序自动生成项目文件。New_project.bat
verilog怎么设置顶层文件,fpga开发

如何设置顶层文件

右键设置顶层文件

verilog怎么设置顶层文件,fpga开发

如何选择常规引脚

verilog怎么设置顶层文件,fpga开发
记得在nCEO选项双击
verilog怎么设置顶层文件,fpga开发

界面介绍

verilog怎么设置顶层文件,fpga开发

  1. 引脚设置,引脚设置可以导出,导出时需要将默认导出的后缀.csv改成.tcl,tool——tcl script添加运行脚本。
  2. 全编译,当项目准备完成后可以选择。
  3. 分析综合,当未设置引脚时编译可以选择此处
  4. 编译日志
  5. 芯片设计
  6. 烧录运行

如何使用quantus生成波形图

确保你已经连接上了板子。
verilog怎么设置顶层文件,fpga开发
verilog怎么设置顶层文件,fpga开发

verilog怎么设置顶层文件,fpga开发
双击空白处
verilog怎么设置顶层文件,fpga开发
verilog怎么设置顶层文件,fpga开发
verilog怎么设置顶层文件,fpga开发
修改值
verilog怎么设置顶层文件,fpga开发

verilog怎么设置顶层文件,fpga开发

verilog怎么设置顶层文件,fpga开发

二、简易流水灯设计

点亮LED

verilog怎么设置顶层文件,fpga开发
提供复制

module led (
    output wire[3:0] led_on
);
assign led_on = 4'b1111;
endmodule

原理图:
verilog怎么设置顶层文件,fpga开发

间隔1s使LED闪烁

注意:FPGA只有双分支和多分支结构没有单分支结构,代码不严谨将导致系统产生毛刺

原理:设计一个计数器,每当时钟数到1s时,灯就会改变一次状态。

module led (
    input wire [0:0] clk,//时钟信号50mhz
    input wire       rst_n,//复位信号下降沿有效
    output wire[3:0] led_on

);

parameter MAX = 26'd50_000_000;

reg [3:0] led_r;   //led信号寄存器
reg [25:0] cnt;  //计数寄存器

//记录1s计数器设计
always @(posedge clk or negedge rst_n) begin //只会在上升沿或者下降沿的时候进入always模块
    if(!rst_n)begin //取反代表下降沿
        cnt <=26'd0;
    end
    else if (cnt == MAX - 1'd1)begin//记到最大数
        cnt <=26'd0;
    end
    else begin //FPGA只有双分支和多分枝结构没有单分支结构,代码不严谨将导致系统产生毛刺
    cnt <= cnt+1'd1;
    end
end                 //计数观察

//并行数据块
always @(posedge clk or negedge rst_n)begin
    
    if(!rst_n)begin
        led_r <= 4'b0000;//4个led全灭
    end
    else if (cnt == MAX-1'd1)begin
        led_r <= ~led_r;         //取反,有记忆性
    end
    else begin
        led_r <= led_r;
    end
end

assign led_on = led_r;
endmodule

拓展,若要间隔0.5s则取MAX=25‘d25_000_000;

点亮跑马灯

注意,代码不严谨,仅供算法参考,此版本可能通不过编译。

原理:设计一个0.5s计数器

module led (
    input wire [0:0] clk,//时钟信号50mhz
    
    input wire       rst_n,//复位信号下降沿有效

    output wire[3:0] led_on

);

parameter MAX = 25'd25_000_000;

reg [3:0] led_r;   //led信号寄存器
reg [24:0] cnt;  //计数寄存器

//记录0.5s计数器设计
always @(posedge clk or negedge rst_n) begin //只会在上升沿或者下降沿的时候进入always模块
    if(!rst_n)begin //取反代表下降沿
        cnt <=25'd0;
    end
    else if (cnt == MAX - 1'd1)begin//记到最大数
        cnt <=25'd0;
    end
    else begin //FPGA只有双分支和多分枝结构没有单分支结构,代码不严谨将导致系统产生毛刺
    cnt <= cnt+1'd1;
    end
end                 //计数观察

//并行数据块
/*
always @(posedge clk or negedge rst_n)begin
    
    if(!rst_n)begin
        led_r <= 4'b0000;//4个led全灭
    end
    else if (cnt == MAX-1'd1)begin
        led_r <= ~led_r;         //取反,有记忆性
    end
    else begin
        led_r <= led_r;
    end
end
*/

//跑马灯0001,0011,0111,1111,1110,1100,1000,0000

 //从左向右0.5s点亮流水灯
always @(posedge clk or negedge rst_n)begin
    
    if(!rst_n)begin
        led_r <= 4'b0001;//4个led全灭
    end
    else if (cnt == MAX-1'd1)begin
    	//led_r <= {led_r[2:0],led_r[3]};   //从左往右
		//led_r <= {led_r[2:0],~led_r[3]};  //从左往右跑马灯
		//led_r <= {led_r[0],led_r[3:1]};   //从右向左  
	    //led_r <= {~led_r[0],led_r[3:1]};  //从右向左跑马灯跑马灯 	 
    end
    else begin
        led_r <= led_r;
    end
end

assign led_on = led_r;//顺序无所谓

endmodule

本文基于个人理解撰写,仅供参考。文章来源地址https://www.toymoban.com/news/detail-790565.html

到了这里,关于【FPGA第一天】Verilog基础与简易流水灯设计的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Verilog 实现流水灯

    信号定义 信号名 端口类型 信号说明 Clk i 输入时钟信号,50MHz Rst_n i 输入复位信号,低电平有效 Led[7:0] o 输出LED信号,低电平有效 仿真图 关于Modelsim的使用,请自行百度 如果是第一次使用开发板的童鞋,参看这里更新驱动,切记,前提条件是开发板正确和PC连接,并且已经通

    2024年02月11日
    浏览(40)
  • fpga--流水灯

    fpga流水灯的设计 思路:外部时钟频率50mhz,若要实现每隔0.5s闪烁一次,则使用内部计数器计数到24999999拉高一个周期电平,当电平被拉高的时候,进行LED灯电平的设置,每次检测到高电平,就进行一位LED灯的设置,进行循环设置,就形成了流水灯的设计。 测试代码  

    2024年02月15日
    浏览(41)
  • 流水灯——FPGA

    环境: 1、Quartus18.0 2、vscode 3、板子型号:EP4CE6F17C8 要求: 每隔0.2s循环亮起LED灯 从LED0开始亮起到LED3又回到LED0循环往复。 流水灯 这里使用了拼接符对LED进行处理加上一个0.2s的计时器进行控制即可。 led流水灯

    2024年02月16日
    浏览(47)
  • FPGA学习——点亮流水灯

    在FPGA开发板中,一般板载LED默认高电平点亮,因此我们只需要将想要亮起的LED赋值为1即可。 本入门实验要求为每隔1s开发板上的LED轮流亮起,因此我们需要一个1s的计数器, 由于开发板晶振时钟为50MHz,因此我们计数50_000_000即为1s。 注意:为了后续方便仿真所以这里MAX设置

    2024年02月13日
    浏览(48)
  • 按键控制流水灯方向——FPGA

    环境: 1、Quartus18.0 2、vscode 3、板子型号:EP4CE6F17C8 要求: 按键1按下,流水灯从右开始向左开始流动,按键2按下,流水灯从左开始向右开始流动,按键3按下LED每隔1s进行亮灭,按键4按下LED常亮。 “自锁”是指开关能通过锁定机构保持某种状态(通或断),“轻触”是说明操

    2024年02月07日
    浏览(46)
  • Verilog HDL——LED流水灯工程&LED点阵显示

    LED流水灯 根据8位LED灯与EPM240引脚I/O对应关系 配置CPLD引脚: Hardware SetupUSB-Blaster[USB-0]JTAG Mode 下载工程: LED点阵显示 LED点阵电路: 00IC-EPM240 开发板采用的点阵型号是 10788。8×8LED 点阵共有 16 个引脚,分别控制 8 行和 8 列,行列共同决定其中一个 LED 的亮灭。图中 ROW 为行,

    2024年02月03日
    浏览(44)
  • SOC FPGA之流水灯设计

            Altera Soc EDS开发套件的核心是Altera版ARM Development Studio 5(DS-5)工具包,为SoC器件提供了完整的嵌入式开发环境、FPGA自适应调试和对Altera工具的兼容。 首先下载破解器 然后进入cmd运行,进入到破解器所在文件夹  然后输入patcher.exe --license ?:licensepath 最后显示.dat文件即

    2024年02月14日
    浏览(42)
  • 基于FPGA的花样流水灯的设计

    1、学习ISE Design Suite 14.7的基本操作; 2、掌握FPGA的开发流程; 3、学习时序电路的设计; 4、巩固状态机的相关知识。 根据对该实验要求的分析,设计状态转移图如下: 其中,在S1状态下LED灯从左往右依次亮;在S2状态下LED灯从右往左依次亮;在S3状态下LED灯从中间向两边扩散

    2024年01月16日
    浏览(44)
  • FPGA入门————LED流水灯(超详细教程)

    本文使用软件为vivado,其实用哪个软件都是一样的,主要是掌握核心编程思想。 如有需要下载vivado软件下载可以参考: vivado及ISE各版本软件下载方法、链接及详细步骤,官方网页下载_ise软件下载_千寻xun的博客-CSDN博客 目录 一、新建工程及设计文件 二、编写LED流水灯程序

    2024年02月08日
    浏览(43)
  • FPGA:Vivado流水灯设计详细流程(1)

    基于Vivado的FPGA设计开发的流程主要包括以下步骤: 1)创建工程; 2)创建源设计文件,包括Verilog文本、IP核、模块文件、网表输入等方式; 3)行为仿真(Behavioral Simulation),Vivado自带仿真器,也可以选择第三方仿真软件ModelSim等工具进行仿真; 4)综合(Synthesis):根据设

    2024年02月03日
    浏览(52)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包