always @(posedge clk)begin if(state==2'd1) begin case(encode_data_in[6:4]) 3'd0:begin scope_cnt1<=11'd0; scope_cnt2<=7'd1; end 3'd1:begin scope_cnt1<=11'd16; scope_cnt2<=7'd1; end 3'd2:begin scope_cnt1<=11'd32; scope_cnt2<=7'd2; end 3'd3:begin scope_cnt1<=11'd64; scope_cnt2<=7'd4; end 3'd4:begin scope_cnt1<=11'd128; scope_cnt2<=7'd8; end 3'd5:begin scope_cnt1<=11'd256; scope_cnt2<=7'd16; end 3'd6:begin scope_cnt1<=11'd512; scope_cnt2<=7'd32; end 3'd7:begin scope_cnt1<=11'd1024; scope_cnt2<=7'd64; end endcase end end
时间: 2024-02-19 16:00:08 浏览: 67
lookup_multi.rar_4 3 2 1_乘法器_乘法器查找表_查找表_查找表乘法器
这段代码也是 Verilog HDL 语言的代码,是一个基于时钟上升沿的状态机模块。当时钟上升沿到来时,如果当前状态为 1,则根据输入信号 encode_data_in[6:4] 来决定 scope_cnt1 和 scope_cnt2 的值。具体来说,如果输入信号的值为 0,则 scope_cnt1 的值为 0,scope_cnt2 的值为 1;如果输入信号的值为 1,则 scope_cnt1 的值为 16,scope_cnt2 的值为 1;如果输入信号的值为 2,则 scope_cnt1 的值为 32,scope_cnt2 的值为 2;如果输入信号的值为 3,则 scope_cnt1 的值为 64,scope_cnt2 的值为 4;如果输入信号的值为 4,则 scope_cnt1 的值为 128,scope_cnt2 的值为 8;如果输入信号的值为 5,则 scope_cnt1 的值为 256,scope_cnt2 的值为 16;如果输入信号的值为 6,则 scope_cnt1 的值为 512,scope_cnt2 的值为 32;如果输入信号的值为 7,则 scope_cnt1 的值为 1024,scope_cnt2 的值为 64。如果当前状态不是 1,则不做任何操作,scope_cnt1 和 scope_cnt2 的值保持不变。
阅读全文