嵌套状态机请教

[复制链接]
4343|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 | 显示全部楼层
那个复位信号又怎么处理,是接到上电复位的引脚,还是连到一个按键专门来手工复位?
 楼主| jlgcumt 发表于 2010-5-21 09:31 | 显示全部楼层
刚开始弄个 `timescale 1ns / 1ps又是怎么回事
软件自己会处理这个预定义吗。一般FPGA要接几个晶振,他要工作自己也得要一个吧!
 楼主| jlgcumt 发表于 2010-5-21 17:15 | 显示全部楼层
FPGA对一个器件做操作时为什么要为这个器件建模,假如我要读取at24c02,为什么还得建个at24c02的模型,直接写读写程序不就行了
guwu 发表于 2010-5-22 12:34 | 显示全部楼层
是不是在配置的时候把clk随便分配到某个引脚,然后再把晶振连到此引脚上就行了,那些全局时钟又是怎么回事?
jlgcumt 发表于 2010-5-21 09:17

器件上有一个引脚是专门作为时钟用的,将晶振连接到这个引脚上,就作为全局时钟吧
guwu 发表于 2010-5-22 12:38 | 显示全部楼层
那个复位信号又怎么处理,是接到上电复位的引脚,还是连到一个按键专门来手工复位?
jlgcumt 发表于 2010-5-21 09:27

应该可以手动复位,也可以上电复位,看你要怎么用吧
 楼主| jlgcumt 发表于 2010-5-23 12:57 | 显示全部楼层
谢谢guwu的解答。
 楼主| 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

粉丝
快速回复 在线客服 返回列表 返回顶部