门关键词: 可变电阻器 直插式开关 卡尔曼滤波器的原理 7805稳压电源电路图 什么是光纤连接器 双置开关 上海气动元件
IC库存(8958万) PDF资料(329万) IC价格 IC求购 资讯 技术资料
电子元器件搜索:
维库电子市场网是知名的电子元器件交易网站,为电子生产企业提供IC库存和技术资料查询服务。
我是verilog的初学者,请教各位帮忙看个程序
新闻出处:中电网论坛 发布时间: 2007-08-20
yoyo2004qimin 发布于 2007-6-22 15:40:00

module MYFX2 (
              nRESET,// Inputs from FX2
               PA,
               KEY,
         MMCLK,       //from cytal
          LED,      // LED indicator
               GPD, CTL,RDY
              );
//////////////////////////////////
inout [15:0]GPD;

input [2:0]CTL;
output [1:0]RDY;
reg  [1:0]RDY;
////////////////////////////////////////////
input nRESET;
///////////////////////////////////
input [3:0]KEY;
inout [7:0]PA;
//////////////////////////////////

input MMCLK;

output  [3:0]LED;
reg  [3:0]LED;

reg [15:0]DREG;
reg BLable;


//output  USBCLK;
reg  [1:0]      STATE,NEXT;

reg             CLK_2,CLK_4,CLK_8;
wire            HCLK;

parameter     IDLE     = 2'D0,
               WRITE_1  = 2'D1,
               WRITE_2  = 2'D2;


assign PA[4]=0;
assign PA[5]=1;
assign  GPD[15:0]=RDY[1]? 'hz :DREG[15:0];

always @(posedge MMCLK)
 begin
   CLK_2 <= ~CLK_2;
 end

always @(posedge CLK_2)
 begin
   CLK_4 <= ~CLK_4;
 end


always @(posedge CLK_4)
 begin
   CLK_8 <= ~CLK_8;
 end

assign HCLK = CLK_8;

 
//state machine             
 always @ (STATE or LED[0])
 begin
     case(STATE)
     IDLE    : if(LED[0])
                   NEXT = WRITE_1;
               else
                   NEXT = IDLE   ;
     WRITE_1 : NEXT = WRITE_2;
     WRITE_2 :
               NEXT = WRITE_1;
     default : NEXT = IDLE ;
     endcase
 end
 
 //registe the state
always @(posedge HCLK or negedge nRESET)
if(!nRESET)
begin
    STATE <= IDLE;
 
end
 else
    STATE <= NEXT;
 
 
always @(posedge HCLK or negedge nRESET)
if(!nRESET)
    begin
        DREG  <=16'hffff;
        RDY[1]      <=1'b1;
        RDY[0]      <=1'b1;
        LED[0]     <= 1'b1;
      //  BLable=1; 
    end
 else
    case(STATE)
    IDLE    : begin
                  RDY[0]     <= 1;
                  RDY[1]     <= 1;
                 

              end
    WRITE_1 : begin
                //  if (BLable==1)
                //  begin
                  DREG <= DREG+1;
                //  if (DREG==255) BLable=0;
    //  end
    //  if (BLable==0)
                //  begin
                //  DREG <= DREG-1;
                //  if (DREG==0) BLable=1;
    //  end
                  RDY[1]     <= 1'b0;
                  RDY[0]     <= 1'b1;
                    
              end
    WRITE_2 : begin
                  RDY[1]  <= 1'b1;
                  RDY[0]  <= 1'b1;

              end
    endcase


一切从零开始 发布于 2007-6-23 19:38:00
有什么问题?
每一天都是新的开始,每一天都有新的收获
yoyo2004qimin 发布于 2007-6-25 10:31:00

我看得不是很懂,不是很明白程序实现的是什么功能,请各位赐教!还有就是这个程序转成VHDL应该不难吧?


caopengly 发布于 2007-8-20 9:42:00

"不是很明白程序实现的是什么功能"程序最后就用状态机控制了             

                  RDY[0]  RDY[1]  ,先为11,而后01,11

转vhdl不难


这个版主不太冷
===========================
我的中电网博客:http://blog.chinaecnet.com/u/20/index.htm
关闭】 【打印
 
相关专题
 
友情链接:
© 2007 电子元件网 网站地图