前言

  终于有时间折腾这块fpga开发板了,不知不觉又熬夜了。

正文

  实现一个呼吸灯的项目

  打开quartus ii 建立工程 步骤就不讲了

  新建一个pwm.v文件内容

module PWM ( 

    input sys_clk,
input sys_rst_n,
input [WIDTH-1:0] duty_cycle, //output ports
output wire pwm ); //reg define reg pwm_out;
reg [19:0] counter; // 最大值 1048575,PWM频率最低可以设置到 48HZ //parameter define
parameter WIDTH = 7; /*
设PWM频率为 f,晶振频率为F
则计数器的最大值为 counter_max = (1/f)/(1/F) = F/f = 50M / 2K = 25*10^3
*/
parameter PWM_FREQUENCY = 2_000; //2K
parameter OSC_FREQUENCY = 50_000_000; //50M
parameter COUNTER_MAX = OSC_FREQUENCY/PWM_FREQUENCY; // 主程序
always @(posedge sys_clk or negedge sys_rst_n) begin
if (sys_rst_n ==1'b0)
counter <= 20'b0;
else if (counter>=COUNTER_MAX)
counter <= 20'b0;
else
counter <= counter + 20'b1;
end always @(posedge sys_clk or negedge sys_rst_n) begin
if (sys_rst_n ==1'b0) begin
pwm_out <= 1'b0;
end
else if (counter <= COUNTER_MAX*duty_cycle/100)
pwm_out <= 1'b1;
else
pwm_out <= 1'b0;
end assign pwm = !pwm_out; endmodule

  建立LED.V设为顶层文件

module LED
(
input wire clk ,
input wire rst_n ,
output wire led
); wire [6:0] dyc; reg [6:0] dyc_value;
reg [25:0] cnt;
reg state; initial dyc_value = 0;
initial state = 0; parameter delay_ms = 50_000 * 10; always @(posedge clk or negedge rst_n)begin
if(! rst_n)begin
cnt <= 0;
dyc_value <= 0;
state <= 0;
end else begin if(cnt == delay_ms -1)begin
cnt <= 0;
if(state == 0)
dyc_value <= dyc_value + 1;
else
dyc_value <= dyc_value - 1;
end else begin
cnt <= cnt + 1;
end if(dyc_value == 100)
state <= 1;
else if(dyc_value == 0)
state <= 0;
end
end assign dyc = dyc_value; PWM U_PWM(
.sys_clk(clk),
.sys_rst_n(rst_n),
.duty_cycle(dyc),
.pwm(led)
); endmodule

FPGA学习过程(一)的更多相关文章

  1. FPGA学习过程(二)

    项目:数码管动态显示时间 首先建立一个计时一秒的模块,作为数码管显示的需要 module timer_s( input wire clk, input wire rst_n, output wire ...

  2. 学习FPGA过程中的理论知识

    学习FPGA,先要有数电知识,最好有点C语言,,学好硬件描述语言,verilog或者vhdl.在有这些基础上,做一些小的模块不断积累.这里不再赘述. 下面介绍一下关于FPGA学习过程中的一些理论知识. ...

  3. 基于Verilog的偶数、奇数、半整数分频以及任意分频器设计

    在FPGA的学习过程中,最简单最基本的实验应该就是分频器了.由于FPGA的晶振频率都是固定值,只能产生固定频率的时序信号,但是实际工程中我们需要各种各样不同频率的信号,这时候就需要对晶振产生的频率进行 ...

  4. FPGA学习之基本结构

    如何学习FPGA中提到第一步:学习.了解FPGA结构,FPGA到底是什么东西,芯片里面有什么,不要开始就拿个开发板照着别人的东西去编程.既然要开始学习FPGA,那么就应该从其基本结构开始.以下内容是我 ...

  5. FPGA学习之路——一路走来

    既然选择了远方,便不顾风雨兼程,一路走下去. —韩彬 在看bingo的书时,看到这样写到.做什么事情都不容易,学习也是,所以一个词很重要不忘初心.作为一名大二的学生,我很高兴能够将自己学习FPGA的过 ...

  6. 基于FPGA的HDMI高清显示接口驱动

    HDMI是(High Definition Multimedia Interface)的缩写,意思是高清晰度多媒体接口,是一种数字化视频/音频接口技术,适合影像传输的专用型数字化接口,可同时传送音频和 ...

  7. 基于FPGA的Cordic算法实现

    CORDIC(Coordinate Rotation Digital Computer)算法即坐标旋转数字计算方法,是J.D.Volder1于1959年首次提出,主要用于三角函数.双曲线.指数.对数的 ...

  8. 【转载】FPGA算法设计随笔

    FPGA设计算法依次需要完成MATLAB浮点仿真 MATLAB定点仿真 verilogHDL定点运算以及数据对比的流程.其中浮点到定点的转换尤为重要,需要在数据表示范围和精度之间做出权衡.另外掌握定点 ...

  9. 基于FPGA的DDS设计(一)

    最近在学习基于FPGA的DDS设计,借此机会把学习过程记录下来,当作自己的学习笔记也希望能够帮助到学习DDS的小伙伴. DDS(Direct Digital Synthesizer)直接数字合成器,这 ...

随机推荐

  1. Linux | 管首命令符号

    简介 管道的意思,在我们日常生活中,意思就是运输一个东西,到下一个地方,所以说 管道命令符 的使用也是差不多的,也是运送一段数据到下一个地方,格式:命令A | 命令B | 命令C .... 所以说,管 ...

  2. java基础---数组的查找算法(2)

    一.查找的基本概念 查找分为有序查找和无序查找,这里均以数组为对象,有序查找指的是数组元素有序排列,无序查找指的是数组元素有序或无序排列 平均查找长度(Average Search Length,AS ...

  3. C语言:printf("")标志详解

    %d 十进制整数 %ld  十进制长整型 %hd 十进制短整型 %o 八进制整数 %X  %x  十六进制 整数 %f 以十进制形式输出 float 类型: %lf 以十进制形式输出 double 类 ...

  4. Spring总结之事务

    Spring事务 1)定义 事务是指多个操作单元组成的集合,多个操作单元是整体不可分割的,要么都成功,要么都不成功.必须遵守四个原则(ACID) ●原子性(Atomicity):即事务是不可分割的最小 ...

  5. P2014选课

    洛谷P2014选课 一道树形DP题. f[i][j]表示i个点选j门课程的最大学分. 递推方程: for(int a=n;a>0;a--)//总共选择多少 for(int b=0;b<a; ...

  6. Xshell记录Linux连接操作日志遇到的坑

    1.问题描述: 在Windows上,以前一直使用Secure CRT连接Linux主机进行远程操作,使用CRT的日志功能记录连接过程中的所有操作以及输出. 最近(2019-8-17)使用Xshell进 ...

  7. Linux中tomcat随服务器自启动的设置方法

    1. cd到rc.local文件所在目录,一般在 /etc/rc.d/目录. 2. 将rc.local下载到本地windows系统中. 3. 编辑rc.local,将要启动的tomcat  /bin/ ...

  8. Deepin V20.1 解决安装Edge浏览器后更新系统报错的方法

    问题描述:有些人在deepin系统上安装完edge浏览器后采用sudo apt update命令更新系统,却报出了错误,更新失败.原因是更新deepin系统的时候,最好把其它的源禁用了,不然会有各样的 ...

  9. [源码解析] 机器学习参数服务器ps-lite (1) ----- PostOffice

    [源码解析] 机器学习参数服务器ps-lite 之(1) ----- PostOffice 目录 [源码解析] 机器学习参数服务器ps-lite 之(1) ----- PostOffice 0x00 ...

  10. SpringBoot添加Cors跨域配置,解决No 'Access-Control-Allow-Origin' header is present on the requested resource

    目录 什么是CORS SpringBoot 全局配置CORS 拦截器处理预检请求 什么是CORS 跨域(CORS)请求:同源策略/SOP(Same origin policy)是一种约定,由Netsc ...