微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 嵌入式设计讨论 > FPGA,CPLD和ASIC > 联发科笔试题 求解答!

联发科笔试题 求解答!

时间:10-02 整理:3721RD 点击:
设计一状态机,模拟手机输入英文状态;比如1,按1下是a, 2下是b, 3下是c; 如果切换到2, 则上面的字母显示到屏幕上;按 #则直接输出;按0和*不起作用。输入 [3:0], 输出 [4:0]. 要求写完整verilog.

额。 看下fsm基础介绍, 画个state diagram,照着写if statement就行了。
这种问题还是自己解决吧

你应聘的什么岗位?联发科也招FPGA的吗?招过去做什么?

貌似很基础的啊,哈哈!

说实话,这个写不出来,那你的书基本算是白读了
周末有时间贴个出来

只看到一群讲大话的

请各位高人指导!求改错!


module keyboard(in1,in2,in3,screen,print);
//in1~in3对应1,2,#。SCREEN,PRINT为屏幕显示和打印信号,1,2,3分别对应a,b,c
input [3:0] in1,in2,in3;
output [4:0]  screen,print;
wire [3:0] in1,in2,in3;
reg [4:0] screen,print,state;
parameter idle=0,a=1,b=2,c=3
always @(posedge clk)
       
        begin
                case(state)
                        idle:begin
                                if(in1) state<=a;
                                else state<=state;
                                end
                        a:begin
                                if(in1) state<=b;
                                else if (in2) screen=1;
                                else if (in3) print=1;
                                end
                        b:begin
                                if(in1) state<=c;
                                else if(in2) screen=2;
                                else if (in3) print=2;
                                end
                        c:begin
                                if(in1) state<=a;
                                else if (in2) screen=3;
                                else if (in3) print=3;
                        default:
                                begin
                                        screen=0;
                                        print=0;
                                        state<=state;
                                end
                endcase
        end
endmodule

MTK要死人的,每天晚上10点,周6,周日不休息,
没有加班费,中秋节发100元
还是选synopsys吧,待遇好,培训多

恩,同意楼上的

    这个状态机都没有涵盖题中说的输入0或*这种情况,另外我有一点不明白的是题中说的输入【3:0】是指什么意思,我暂时理解是输入4个信号,而你代码中所表示的是3个输入信号,每个输入用4位表示。不知我理解对否?另外求高手贴出代码哈

//我的想法请大家指正
module keyboard(output a_ou,b_ou,c_ou,print,screen,
                input press_1,press_2,press_#,press_0and*,clk);
// press_1代表按1键;输出结果由以下几个信号表
示,//a_ou=0,b_ou=1,c_ou=0,print=1,screen=0,这样一组输出代表输出b
reg [1:0]  state;
parameter [1:0]   s_idle="00",s_a="01",s_b="10",s_c="11";
always@(posedge clk)
begin
  a_ou<=0;b_ou<=0;c_ou<=0;print<=0;screen<=0;
  case(state)
   s_idle: if(press_1)  state<=s_a;
   s_a   : if(press_1)  begin state<=s_b; a_ou<=1; end
           else if(press_2) begin state<=s_idle; a_ou<=1;screen<=1; end
           else if(press_#) begin state<=s_idle; a_ou<=1;print<=1;end
           else begin state<=s_a;a_ou<=1;end
   s_b  :  if(press_1)  begin state<=s_c; b_ou<=1; end
           else if(press_2) begin state<=s_idle; b_ou<=1;screen<=1; end
           else if(press_#) begin state<=s_idle; b_ou<=1;print<=1;end
           else begin state<=s_b;b_ou<=1;end
   s_c: if(press_1)  begin state<=s_a; c_ou<=1; end
           else if(press_2) begin state<=s_idle; c_ou<=1;screen<=1; end
           else if(press_#) begin state<=s_idle; c_ou<=1;print<=1;end
           else begin state<=s_c;c_ou<=1;end
   default:
          begin  a_ou<=0;b_ou<=0;c_ou<=0;print<=0;screen<=0; end
   endcase
end



    SYNOPSYS要怎样才能进啊?



    这么恐怖,我听学长好像说mtk的待遇神马的还不错啊,你是再mtk受过虐待吗?

按你的说法,手机键盘应该有0~9以及#共11个输入信号,当然要4bits输入残能覆盖11种输入可能。

输入要求覆盖0~9以及*,当然需要4bits输入才能表示。

hehe..................

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top