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

来源:百度知道 编辑:UC知道 时间:2024/07/08 03:05:28
用FPGA串口发送一个16位的数据,当然需要分两次发送,每次发送8位。单独发送8位数据的程序我有,如果要实现16位发送,需要如何修改呢?哪位高人做过相关的东西,指点一下吧

参考思路:
  串口在调试代码的时候,打印信息很方便,MCU,DSP,ARM,都是集成的串口控制器,向SBUF写数据,然后启动发送,就是可以开始发送数据了,但是FPGA没有这个集成的串口控制器,这就需要自己模拟IO来实现的;
  需要连续发送16bit的数据,也就是说,每次启动串口发送,都是发送2个字节数据,只要TxD_start输入一定频率的矩形波,就是连续将16bit数据发送出去了。

你如果是用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实现