完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
刚开始接触FPGA,麻烦大家了,问你们一个问题哈:对于FPGA的串口通讯程序,那些子模块程序,像波特率发生模块,接收和发送模块等,是自己一点一点写出来的?还是可以直接去调用呢???
|
|
相关推荐
9个回答
|
|
FPGA没有库的概念,网上应该有公开的串口的IP核可以拿来用,或者是FPGA的厂商有提价,但是要跟MCU的串口相比,还差得多,MCU里的串口都是用商业IP核,不在一个等级
|
|
|
|
要自己写出来
|
|
|
|
|
|
|
|
要是自己写,是不是感觉效率太低了吧?~~毕竟其它的单片机几乎几句话就搞定串口了~
|
|
|
|
恩,我感觉应该也有类似于STM32那样有固件库,可以直接拿来调用,这样就大大提高效率了~
|
|
|
|
貌似有个脚nios的东东,楼主可以研究下.
|
|
|
|
nios只是ARM的软核,只是个内核,其它的外设还是靠自己去写或者用IP核
|
|
|
|
好的,太感谢你了~~
|
|
|
|
FPGA的串口是要自己实现的,这就是为啥它难了。实现个啥功能都得自己从时序开始一点一点实现,不像单片机,几句话配置下就可以用了
这个程序,50M晶振,波特率9600,串口接收 module RS485_Recv ( //input input sys_clk , input sys_rst_n , input RO , //output output wire RE_DE , output reg[7:0] LED ); //parameter define parameter WIDTH1 = 8 ; parameter WIDTH2 = 16 ; //reg define reg[WIDTH1-1:0] buff ; reg[WIDTH1-1:0] data_out ; reg[WIDTH2-1:0] counter ; reg rxd_din1 ; reg rxd_din2 ; reg rxd_negedge_sig_flag ; //wire define wire rxd_negedge_sig ; assign RE_DE = 1'b0 ; always @(posedge sys_clk or negedge sys_rst_n) begin if(sys_rst_n == 1'b0) begin rxd_din1 <= 1'b0 ; rxd_din2 <= 1'b0 ; end else begin rxd_din1 <= RO ; rxd_din2 <= rxd_din1 ; end end assign rxd_negedge_sig = (~rxd_din2) & (rxd_din1) ; always @(posedge sys_clk or negedge sys_rst_n) begin if(sys_rst_n == 1'b0) rxd_negedge_sig_flag <= 1'b0 ; else rxd_negedge_sig_flag <= rxd_negedge_sig ; end always @(posedge sys_clk or negedge sys_rst_n) begin if(sys_rst_n == 1'b0) counter <= 16'b0 ; else if(rxd_negedge_sig_flag == 1'b1 && counter > 16'd57200) counter <= 16'b0 ; else if(counter <= 16'd57200) counter <= counter + 16'b1; else ; end always @(posedge sys_clk or negedge sys_rst_n) begin if(sys_rst_n == 1'b0) buff <= 8'b0; else begin case(counter) 7800 : buff[0] <= rxd_din1 ; 13000 : buff[1] <= rxd_din1 ; 18200 : buff[2] <= rxd_din1 ; 23400 : buff[3] <= rxd_din1 ; 28600 : buff[4] <= rxd_din1 ; 33800 : buff[5] <= rxd_din1 ; 39000 : buff[6] <= rxd_din1 ; 44200 : buff[7] <= rxd_din1 ; default: buff <= buff ; endcase end end always @(posedge sys_clk or negedge sys_rst_n) begin if(sys_rst_n == 1'b0) LED <= 8'b0 ; else LED <= ~buff; end endmodule |
|
|
|
只有小组成员才能发言,加入小组>>
2907 浏览 3 评论
27715 浏览 2 评论
3484 浏览 2 评论
3990 浏览 4 评论
基于采用FPGA控制MV-D1024E系列相机的图像采集系统设计
2338 浏览 3 评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-29 02:46 , Processed in 1.228105 second(s), Total 112, Slave 93 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号