用FPGA串口发送一个16位的数据 怎么做?

用FPGA串口发送一个16位的数据,当然需要分两次发送,每次发送8位。单独发送8位数据的程序我有,如果要实现16位发送,需要如何修改呢?哪位高人做过相关的东西,指点一下吧... 用FPGA串口发送一个16位的数据,当然需要分两次发送,每次发送8位。单独发送8位数据的程序我有,如果要实现16位发送,需要如何修改呢?哪位高人做过相关的东西,指点一下吧 展开
 我来答
seagull5414
推荐于2018-03-29 · TA获得超过367个赞
知道小有建树答主
回答量:192
采纳率:0%
帮助的人:109万
展开全部
你如果是用FPGA逻辑实现的串口收发控制器的话应该是用状态机实现的串并转换,那么你加一个变量I你的发送BUF也就是并行的数据是16位的,你只用作一个8位的串并转换,再每个状态下I都加1像下面这样:
bit1 : begin dataout <= data_buf[i]; state <= bit2; i<=i+1; end
bit2 : begin dataout <= data_buf[i]; state <= bit3; i<=i+1; end
bit3 : begin dataout <= data_buf[i]; state <= bit4; i<=i+1; end
bit4 : begin dataout <= data_buf[i]; state <= bit5; i<=i+1; end
bit5 : begin dataout <= data_buf[i]; state <= bit6; i<=i+1; end
bit6 : begin dataout <= data_buf[i]; state <= bit7; i<=i+1; end
bit7 : begin dataout <= data_buf[i]; state <= bit8; i<=i+1; end
bit8 : begin dataout <= data_buf[i]; state <= over; i<=i+1; end
再搞一个控制I的值的判断向控制I的值在0-15之间就可以了。
当然你如果是用NIOS2实现的话就更简单了,你去看看资料或者去网上找点例程一看就明白我这里就不说了。
糜微婉阎瑜
2019-01-25 · TA获得超过3万个赞
知道大有可为答主
回答量:1.1万
采纳率:29%
帮助的人:796万
展开全部
要发送多少数据可以由你控制啊,你在verilog代码中编好输出
out
【3:0】
dataout(如果是8位的话是【7:0】);
再在ucf文件中,关联好dataout和fpga的4个io端口,这样就是发送4位了。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
chentaotommy
2009-09-12
知道答主
回答量:11
采纳率:0%
帮助的人:8.4万
展开全部
设计两个8位移位寄存器,分别存放高8位和低8位,一个高8位“空”信号,先传输高8位,当高8位传出完了之后,用“空”信号触发低8位发送。当然低8位也可以设计个“空”信号,来触发下一步操作。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
vclinux
2009-09-13
知道答主
回答量:25
采纳率:0%
帮助的人:14.2万
展开全部
先发8位,延时一下,再发8位不就行了。就用IOWR***()函数就行了。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
匿名用户
2009-09-12
展开全部
哥们,有串口收发的程序吗?
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 2条折叠回答
收起 更多回答(4)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式