打印

嵌套状态机请教

[复制链接]
3521|9
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
jlgcumt|  楼主 | 2010-5-20 11:00 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 jlgcumt 于 2010-5-27 15:46 编辑

module sw_led(clk, rst, sw0, sw1, sw2, sw3, led0, led1, led2, led3, led4,
                 led5, led6, led7);
    input         clk;
    input         rst;
    input         sw0;
    input      sw1;
    input      sw2;
    input      sw3;
    output      led0;
    output      led1;
    output    led2;
    output    led3;
    output    led4;
    output    led5;
    output    led6;
    output    led7;
    wire     led0;
  wire    led1;
  wire    led2;
  wire    led3;
  wire    led4;
  wire    led5;
  wire    led6;
  wire    led7;
  wire   [3 :0] sw;
  reg    [7 :0] led;
  assign   sw = {sw0,sw1,sw2,sw3};
  assign   {led0,led1,led2,led3,led4,led5,led6,led7} = led;
  always @ ( posedge clk or negedge rst)
   begin
   if(!rst)
    led<='b0;
   else
    case ( sw )
    4'b0001:  led <= 8'b0000_0001;
    4'b0010:  led <= 8'b0000_0010;
    4'b0100:  led <= 8'b0000_0100;
    4'b1000:  led <= 8'b0000_1000;
    4'b0011:  led <= 8'b0001_0000;
    4'b0110:  led <= 8'b0010_0000;
    4'b1100:  led <= 8'b0100_0000;
    4'b1001:  led <= 8'b1000_0000;
    default:  led <= 8'b0000_0000;
    endcase
  end
endmodule


小弟问一下那个CLK是从哪得到的,是从内部得到还是从配置是连一个外部引脚,引脚上加一个晶振,一般怎么处理这个CLK

相关帖子

沙发
shurenfa| | 2010-5-20 11:50 | 只看该作者
clk是有源晶振输出到FPGA的吧,CLK的频率就是外部晶振的频率

使用特权

评论回复
板凳
jlgcumt|  楼主 | 2010-5-21 09:17 | 只看该作者
是不是在配置的时候把clk随便分配到某个引脚,然后再把晶振连到此引脚上就行了,那些全局时钟又是怎么回事?

使用特权

评论回复
地板
jlgcumt|  楼主 | 2010-5-21 09:27 | 只看该作者
那个复位信号又怎么处理,是接到上电复位的引脚,还是连到一个按键专门来手工复位?

使用特权

评论回复
5
jlgcumt|  楼主 | 2010-5-21 09:31 | 只看该作者
刚开始弄个 `timescale 1ns / 1ps又是怎么回事
软件自己会处理这个预定义吗。一般FPGA要接几个晶振,他要工作自己也得要一个吧!

使用特权

评论回复
6
jlgcumt|  楼主 | 2010-5-21 17:15 | 只看该作者
FPGA对一个器件做操作时为什么要为这个器件建模,假如我要读取at24c02,为什么还得建个at24c02的模型,直接写读写程序不就行了

使用特权

评论回复
7
guwu| | 2010-5-22 12:34 | 只看该作者
是不是在配置的时候把clk随便分配到某个引脚,然后再把晶振连到此引脚上就行了,那些全局时钟又是怎么回事?
jlgcumt 发表于 2010-5-21 09:17

器件上有一个引脚是专门作为时钟用的,将晶振连接到这个引脚上,就作为全局时钟吧

使用特权

评论回复
8
guwu| | 2010-5-22 12:38 | 只看该作者
那个复位信号又怎么处理,是接到上电复位的引脚,还是连到一个按键专门来手工复位?
jlgcumt 发表于 2010-5-21 09:27

应该可以手动复位,也可以上电复位,看你要怎么用吧

使用特权

评论回复
9
jlgcumt|  楼主 | 2010-5-23 12:57 | 只看该作者
谢谢guwu的解答。

使用特权

评论回复
10
jlgcumt|  楼主 | 2010-5-27 09:53 | 只看该作者
本帖最后由 jlgcumt 于 2010-5-27 15:44 编辑

夏宇闻写的那本书上有个EEPROM的例子:

程序大概结构如下:
always @ (posedge CLK)  begin

casex(main_state)
   Idle:
        begin
         ...
        end
   Ready:
        begin
        ...
         end
   Write_start:
       if(FF==0)
          shift_head;
       else
       ....

其中shift_head为

task shift_head:
  begin
   casex(head_state)
   head_begin:
           if(!SCL)
                begin
                  link_write<=NO;
                 ...
                 end
    head_bit:
       ...



一个状态机里面嵌入了一个任务,这个任务又是一个状态机,怎么理解状态机嵌套?在网上查了一下是一个状态机出发另一状态机,但看上面例子也没个握手信号之类的。

使用特权

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

本版积分规则

个人签名:善攻者,动于九天之上,善守者,藏于九地之下!

183

主题

733

帖子

4

粉丝