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