博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

阅读verilog程序总结

Posted on 2015-11-04 20:08  期待1991  阅读(468)  评论(0编辑  收藏  举报

1、写程序先直接写出时钟信号

1 //-----------------产生串行时钟scl,为输入时钟的二分频---------
2 always@(negedge clk)//二分频表示频率小了,周期大了
3   if(reset)
4   scl<=0;
5   else
6   scl<=~scl;

 

2、然后直接写主状态程序

 1 always@(posedge clk)
 2     if(reset)//复位
 3         begin
 4             link_read<=no;//各大开关信号关闭
 5             link_head<=no;
 6             link_write<=no;
 7             link_stop<=no;
 8             link_sda<=no;
 9             ack<=0;
10             rf<=0;//各大标志位赋值
11             wf<=0;//写状态标志位
12             ff<=0;//寄存器标志位
13             main_state<=idle;//主状态进入空闲了
14         end
15     else
16         begin
17             casex(main_state)
18                 idle://空闲状态也是要空闲
19                     begin
20                         link_read<=no;//各大开关
21                         if(wr)//写信号
26                             begin
27                                 wf<=1;
28                                 main_state<=ready;
29                             end
30                         else if(rd)//读信号
31                             begin
32                                 rf<=1;//
33                                 main_state<=ready;
34                             end
35                         else
36                             begin
37                                 wf<=0;
38                                 rf<=0;
39                                 main_state<=idle;
40                             end
41                     end
42                 ready:
43                     begin
44                          head_state<=head_begin;
52                         ff<=0;
53                         ack<=0;
54                         main_state<=write_start;
55                     end
56                 write_start:
57                     begin
58 
59                     end

 3、写程序的过程中每一个根线都应该是加上寄存器和标志位和开关。

  1)输出和输入:加寄存器

  2)输入输出是否完成:加标志位

  3)未完待续。。。。。。。。。。。。。。。