打印

FPGA控制ADC0809

[复制链接]
1929|7
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
桂电蜗牛|  楼主 | 2011-8-20 21:20 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
module ADC0809(clk,rst,eoc,data,start,oe,aclk,q);
input clk;
input rst;
input eoc;
input[7:0]data;
output start;
output oe;
output aclk;
output[7:0]q;
reg start,oe,aclk,temp;
reg[7:0]q;
reg[2:0]current_time,next_time;
reg[4:0]count;
[email=always@(posedge]always@(posedge[/email] clk or negedge rst)
begin
if(!rst)
  count<=0;
else if(count==15'd1000)
  begin
   count<=0;
   aclk=~aclk;
  end
else count<=count+1;
end
[email=always@(posedge]always@(posedge[/email] clk)current_time<=next_time;
parameter st0=3'd0;
parameter st1=3'd1;
parameter st2=3'd2;
parameter st3=3'd3;
parameter st4=3'd4;
parameter st5=3'd5;
parameter st6=3'd6;
always@(*)
begin
if(!rst)
  next_time<=st0;
case(current_time)
st0:
begin
  start<=0;oe<=0;temp<=0;
  next_time<=st1;
end
st1:
begin
  start<=0;oe<=0;temp<=0;
  next_time<=st2;
end
st2:
begin
  start<=1;oe<=0;temp<=0;
  next_time<=st3;
end
st3:
begin
  start<=0;oe<=0;temp<=0;
  if(eoc==1)
   next_time<=st3;
  else next_time<=st4;
end
st4:
begin
  start<=0;oe<=0;temp<=0;
  if(eoc==0)
   next_time<=st4;
  else next_time<=st5;
end
st5:
begin
  start<=0;oe<=1;temp<=0;
  next_time<=st6;
end
st6:
begin
  start<=0;oe<=1;temp<=1;
  next_time<=st0;
end
default:
begin
  start<=0;oe<=0;
  next_time<=st0;
end
endcase
end
[email=always@(posedge]always@(posedge[/email] temp)q<=8'd0;
endmodule
我把等到的数据传回单片机,但始终没反应,求助高手

相关帖子

沙发
桂电蜗牛|  楼主 | 2011-8-20 21:57 | 只看该作者
问题已解决,呵呵

使用特权

评论回复
板凳
lkl10800139| | 2012-4-17 16:33 | 只看该作者
楼主,是哪里的问题。我用cpld读ad9235的值,verilog怎么会写。

使用特权

评论回复
地板
shu081| | 2012-10-7 17:15 | 只看该作者
问题是如何解决的,说出来大家共同学习。

使用特权

评论回复
5
as@yangjun| | 2013-2-22 15:27 | 只看该作者

使用特权

评论回复
6
as@yangjun| | 2013-2-22 15:29 | 只看该作者

使用特权

评论回复
7
廊桥拾梦| | 2013-2-25 11:30 | 只看该作者

使用特权

评论回复
8
rosedao| | 2013-2-25 22:37 | 只看该作者
最后一句吧,temp上升沿应该把data值给q,其他时候q可以置高阻态,另外的话,检测temp上升沿最好不要放在always语句里,用两个寄存器延时与下做判断比较好。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

0

主题

12

帖子

1

粉丝