名称:串口控制输出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
阅读全文