题解 | 移位运算与乘法

移位运算与乘法

https://www.nowcoder.com/practice/1dd22852bcac42ce8f781737f84a3272?tpId=301&tags=&title=&difficulty=0&judgeStatus=0&rp=0&sourceUrl=%2Fexam%2Foj%3FquestionJobId%3D7%26subTabName%3Donline_coding_page

`timescale 1ns/1ns
module multi_sel(
input [7:0]d ,
input clk,
input rst,
output reg input_grant,
output reg [10:0]out
);

//*************code***********//
reg [1:0] cnt;
always @ (posedge clk or negedge rst)  begin
    if (!rst)
    cnt <= 2'b00;
    else
    cnt <= cnt + 1;
end
//capture d
reg [7:0] d1;
always @ (posedge clk or negedge rst) begin
    if (!rst)
    d1<= 8'b0;
    else if (cnt==2'b00)
    d1<=d;
end

always @ (posedge clk or negedge rst) begin
    if (!rst) 
    out <= 11'b0;
    else if (cnt ==2'b00)
    out <= d ;
    else if (cnt == 2'b01)
    out <= d1 + (d1<<1);
    else if (cnt == 2'b10)
    out <= d1+(d1<<1)+(d1<<2);
    else
    out <= d1<<3;
end

always @ (*) begin
input_grant = 0;
input_grant = cnt == 2'b01;
end

//*************code***********//
endmodule                                

本题有以下几个要点:

  1. 复位:异步复位,低有效;
  2. 由于存在乘1/3/7/8的周期性规律,因此可以采用计数器才控制周期0-1-2-3,共计四个周期;
  3. 从d输入值为128而out输出6可以看出输入d对于周期性的乘法操作来说并非实时有效的;
  4. 从波形上来看input_grant在进行乘1运算时输出高电平
  5. 综合以上分析,利用计数器控制周期性乘法操作,当计数器为0时out输出乘1值同时采样d记作d1,当计数器为1时d1*3,当计数器为2时d1*7,当计数器为3时d1*8,四个周期一循环,增加了计数器和d1的时序图如下:

{signal: [
  {name: 'clk', wave: 'P................'},
  {name: 'rst', wave: '01...............'},
  {name: 'd', wave: '2...2....222.....',data:['143','7','6','128','129']},
  {name: 'cnt', wave: '2.222222222222222',data:['0','1','2','3','0','1','2','3','0','1','2','3','0','1','2','3','0']},
  {name: 'd1', wave: '2.2...2...2...2..',data:['0','143','7','6','129']},
  {name: 'out', wave: '2.222222222222222',data:['0','143','429','1001','1144','7','21','49','56','6','18','42','48','129','387','903']},
  {name:'input_grant',wave:'0.10..10..10..10.'}
]}

https://wavedrom.com/editor.html

此外,采用移位运算符号实现乘除法

a = b<<1,左移一位,表示乘以2

a = b>>1,右移一位,表示除以2

如何遇到奇数的乘除法怎么办?进行拆分!

乘以3,拆分成 a + a*2 ;

乘以7,拆分成 a + a*2+ a*4 ;

全部评论

相关推荐

哈哈哈,你是老六:我去,这面试还要靠抢啊
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务