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

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

软件:Quartus

语言:Verilog

代码功能:

串口控制输出pwm

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


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


演示视频:

设计文档:

设计文档.doc

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

代码文件(付费下载):



1、代码文件需要付费后才可见。
2、支付问题请联系微信公众号客服。
3、优质Verilog/VHDL代码资源,所见即所得。
Verilog/VHDL资源下载 » 串口控制输出pwm设计Verilog代码Quartus仿真

注册为本站会员,充值100得150,详情咨询客服

目前为止共有 *** 位优秀的会员加入! 立刻加入会员