这篇文章写一下今天早上设计的并行数据到串行数据的转换器,也算是对并行总线和串行总线一个小小的应用,编码过程中也用到了task。
该转换器主要实现的功能是:
1、把并行地址存入寄存器
2、把并行数据存入寄存器
3、连接串行单总线
4、地址的串行输出
5、数据的串行输出
6、挂起串行单总线
7、给信号源应答
8、让信号源给出下一个操作对象
9、结束写操作
该设计利用嵌套的状态机实现,主状态机分为四个状态:idle,addr_write,data_write,stop,主状态机中会涉及到任务shift8out的调用,该任务主要实现并行数据到串行数据的转换,也是由一个状态机实现。下面给出整个设计的代码:
设计代码:
///并串转换器//
module ps_convertor(clk,rst,data,addr,sda,ack);
parameter idle=4'b0001,addr_write=4'b0010,data_write=4'b0100,stop=4'b1000;//独热编码
parameter sh8_start=9'b00000_0001;
parameter bit6 =9'b00000_0010;
parameter bit5 =9'b00000_0100;
parameter bit4 =9'b00000_1000;
parameter bit3 =9'b00001_0000;
parameter bit2 =9'b00010_0000;
parameter bit1 =9'b00100_0000;
parameter bit0 =9'b01000_0000;
parameter sh8_stop =9'b10000_0000;
input clk,rst;
input [7:0]addr,data;
inout sda;//串行总线
output ack;//应答

本文介绍了如何使用Verilog设计一个并行数据到串行数据的转换器,包括寄存器存储并行地址和数据、连接串行单总线、地址和数据的串行输出等功能。设计采用嵌套状态机实现,主状态机包含idle, addr_write, data_write, stop四个状态,并使用task shift8out进行并行到串行的转换。在Modelsim中进行了仿真验证。"
134463630,7406880,真空热重分析仪精密控制技术改造,"['热重分析', '真空技术', '压力控制', '气体气氛', '精密仪器']
1342

被折叠的 条评论
为什么被折叠?



