如何用verilog语言实现arinc 561总线与RS232总线的互换?
561总线为3对屏蔽双绞线,12KHz,0~12V,可以信号调理芯片转换成为FPGA能够接收的电平。附图如不能查看,可参考[url=http://zhidao.baidu.com/question/147211053.html]http://zhidao.baidu.com/question/147211053.html[/url]
小弟写了接收模块的代码,如下:
module rec561(c561,d561,s561,dat,WR);
input c561,d561,s561;
output [31:0]dat;
output WR;
reg dat_reg=0;
reg WR_reg=0;
reg [8:0] clockcount=0; //receive 561 clock, record the clock number
parameter bity561=32;
parameter gapclockcount=8;
always @(negedge c561 or posedge s561)
begin
if(clockcount==0 || clockcount==gapclockcount-1)
WR_reg=0;
else if(clockcount==bity561)
begin
clockcount=0;
WR_reg=1;
end
else
begin
WR_reg=0;
clockcount=clockcount+1; //record the clock number
dat_reg=dat_reg<<1; //first in high
dat_reg=dat_reg&d561;
end
end
// assign dat=dat_reg; //为什么这两句用assign不行呢?
// assign WR=WR_reg; //怎么样才能正确实现561转32并口输出?
endmodule
总的目的是ARINC 561转RS 232,逻辑不复杂,但我刚刚接触verilog语言,使用libero等软件,所想不能所得,哎,痛苦啊。
我想这个如果采用电平和边沿触发或异步状态机,虽然可能不能综合,也是可以简单实现实现。
如果有现成的IP核,最好。请求赐教,不胜感激。 |