第一范文网 - 专业文章范例文档资料分享平台

基于FPGA和STM32的数据采集系统设计 - 图文

来源:用户分享 时间:2025/7/7 6:35:39 本文由loading 分享 下载这篇文档手机版
说明:文章内容仅供预览,部分内容可能不全,需要完整文档或者需要复制内容,请下载word后使用。下载word有问题请添加微信号:xxxxxxx或QQ:xxxxxx 处理(尽可能给您提供完整文档),感谢您的支持与谅解。

本科毕业设计

TxD <= TxD_dataReg[6]; end

4'b1111: if(BaudTick) begin

state <= 4'b0010; // bit 7 TxD <= TxD_dataReg[7]; end

4'b0010: if(BaudTick) begin

state <= 4'b0011; // stop1 TxD <= 1'b1; end

4'b0011: if(BaudTick) begin

state <= 4'b0000; // stop2 TxD <= 1'b1; end

default: if(BaudTick) begin state <= 4'b0000; TxD <= 1'b1; end endcase endmodule

2 串口接收和控制程序

第 37 页 共 42 页

module uart_232_rx(sys_clk,sys_rst_n,uart_rxd,LED, pwm1,pwm2,A1,B1,sel ); input sys_clk ; //system clock;

input sys_rst_n ; //system reset, low is active; input uart_rxd ; //uart rxd input ; //output ports

output reg [7:0] LED ; output[4:0] pwm1,pwm2; output A1,B1;

本科毕业设计

output[2:0] sel; //频率选择 reg [7:0] buff ; reg [7-1:0] data_out ; reg

第 38 页 共 42 页

uart_rxd_dly1,uart_rxd_dly4,uart_rxd_dly2,uart_rxd_dly3;//uart rxd input ; reg rxd_negdge_sig_dly1 ; reg [15:0] counter ; wire rxd_negdge_sig ;

always @(posedge sys_clk or negedge sys_rst_n) begin if (sys_rst_n ==1'b0) begin uart_rxd_dly1 <= 1'b0; uart_rxd_dly2 <= 1'b0;

uart_rxd_dly3 <= 1'b0; uart_rxd_dly4 <= 1'b0; end else begin

uart_rxd_dly1 <= uart_rxd ; uart_rxd_dly2 <= uart_rxd_dly1;

uart_rxd_dly3 <= uart_rxd_dly2; uart_rxd_dly4 <= uart_rxd_dly3; end end

assign rxd_negdge_sig = (~uart_rxd_dly3) & uart_rxd_dly4;

always @(posedge sys_clk or negedge sys_rst_n) begin if (sys_rst_n ==1'b0)

rxd_negdge_sig_dly1 <= 1'b0; else

rxd_negdge_sig_dly1 <= rxd_negdge_sig;

本科毕业设计

end

always @(posedge sys_clk or negedge sys_rst_n) begin if ( sys_rst_n == 1'b0 ) counter <= 16'b0;

第 39 页 共 42 页

else if ( rxd_negdge_sig_dly1 == 1'b1 && counter > 57200 ) counter <= 16'b0;

else if ( counter <= 57200 ) counter <= counter + 16'b1; else ; end

reg[4:0] pwm1,pwm2; reg[2:0] sel;

reg A1,B1,rd_instru_en;

always @(posedge sys_clk or negedge sys_rst_n) begin if ( sys_rst_n == 1'b0 ) begin buff <= 8'b0;

LED <= 8'b0;

end

else begin

rd_instru_en<=0;

case ( counter )

7800 : buff[0] <= uart_rxd_dly4 ; 13000 : buff[1] <= uart_rxd_dly4 ; 18200 : buff[2] <= uart_rxd_dly4 ; 23400 : buff[3] <= uart_rxd_dly4 ; 28600 : buff[4] <= uart_rxd_dly4 ; 33800 : buff[5] <= uart_rxd_dly4 ; 39000 : buff[6] <= uart_rxd_dly4 ; 44200 : buff[7] <= uart_rxd_dly4 ;

本科毕业设计

endcase

if(counter>57200) begin

第 40 页 共 42 页

default : buff <= buff ;

LED <= buff;

rd_instru_en<=1;

end

end end

always @(posedge rd_instru_en) if (sys_rst_n ==1'b0) begin pwm1<=5'b00000; pwm2<=5'b00000; // LED1<=8'b00000000; end

else begin

if (LED==8'b01000000 ) pwm1<=pwm1+5'b00001; else if ( LED==8'b00000001) pwm2<=pwm2+5'b00001;

else if ( LED==8'b00000010) A1<=0; else if ( LED==8'b00000100) A1<=1; else if ( LED==8'b00001000)B1<=0; else if ( LED==8'b00010000)B1<=1; else if ( LED==8'b00100000) sel<=sel+1; end

Endmodule 2 PWM输出程序

module PWM1 ( clk,rst_n,duty_cycle1,duty_cycle2, pwm1,pwm2); input clk; //system clock;

input rst_n; //system reset, low is active; input[4:0] duty_cycle1,duty_cycle2;

基于FPGA和STM32的数据采集系统设计 - 图文.doc 将本文的Word文档下载到电脑,方便复制、编辑、收藏和打印
本文链接:https://www.diyifanwen.net/c8krx64rd347g2499hht5_10.html(转载请注明文章来源)
热门推荐
Copyright © 2012-2023 第一范文网 版权所有 免责声明 | 联系我们
声明 :本网站尊重并保护知识产权,根据《信息网络传播权保护条例》,如果我们转载的作品侵犯了您的权利,请在一个月内通知我们,我们会及时删除。
客服QQ:xxxxxx 邮箱:xxxxxx@qq.com
渝ICP备2023013149号
Top