• 方案介绍
  • 附件下载
  • 相关推荐
申请入驻 产业图谱

串口控制输出pwm设计Verilog代码Quartus仿真

10/10 10:47
524
加入交流群
扫码加入
获取工程师必备礼包
参与热点资讯讨论

2-2411141R533109.doc

共1个文件

名称:串口控制输出pwm设计Verilog代码Quartus仿真

软件:Quartus

语言:Verilog

代码功能:

串口控制输出pwm

通过串口输入数字来控制pwm波的占空比

FPGA代码Verilog/VHDL代码资源下载:www.hdlcode.com

演示视频:

设计文档:

1. 工程文件

2. 程序文件

3. 程序编译

4. RTL图

5. Testbench

6. 仿真图

接收到10,输出占空比10%的pwm

接收到30,输出占空比30%的pwm

接收到50,输出占空比50%的pwm

接收到80,输出占空比80%的pwm

部分代码展示:

module my_uart_rx(clk,rst_n,rs232_rx,clk_bps,rx_data,rx_en);
input clk;// 50MHz主时钟
input rst_n;//低电平复位信号
input rs232_rx;// RS232接收数据信号
input clk_bps;// clk_bps的高电平为接收或者发送数据位的中间采样点
output[7:0] rx_data;//接收数据寄存器,保存直至下一个数据来到 
output rx_en;//接收数据有效
//----------------------------------------------------------------
reg rs232_rx0,rs232_rx1,rs232_rx2;//接收数据寄存器,滤波用
wire neg_rs232_rx;//表示数据线接收到下降沿
always @ (posedge clk or negedge rst_n) begin
if(!rst_n) begin
rs232_rx0 <= 1'b1;
rs232_rx1 <= 1'b1;
rs232_rx2 <= 1'b1;
end
else begin
rs232_rx0 <= rs232_rx;
rs232_rx1 <= rs232_rx0;
rs232_rx2 <= rs232_rx1;
end
end
assign neg_rs232_rx = rs232_rx2 & ~rs232_rx1;//接收到下降沿后neg_rs232_rx置高一个时钟周期
//----------------------------------------------------------------
reg[3:0]num;//移位次数
reg rx_int;//接收数据中断信号,接收到数据期间始终为高电平
always @ (posedge clk or negedge rst_n) begin
if(!rst_n) begin
rx_int <= 1'b0;
end
else if(neg_rs232_rx) begin
rx_int <= 1'b1;//接收数据中断信号使能
end
else if(num==4'd11) begin
rx_int <= 1'b0;//接收数据中断信号关闭
end

点击链接获取代码文件:http://www.hdlcode.com/index.php?m=home&c=View&a=index&aid=1365

  • 2-2411141R533109.doc
    下载

相关推荐