完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
|
module booth_multiplier_module(
input CLK, input reset, input Start_Sig, input[7:0]A, input[7:0]B, output[16:0]Product, output[7:0]SQ_a, output[7:0]SQ_s, output[16:0]SQ_p ); reg[3:0]i; reg[7:0]a; reg[7:0]s; reg[16:0]p; reg[3:0]X; reg isDone; always @ (posedge CLK or negedge reset) if(!reset) begin i<=0; a<=8'd0; s<=8'd0; p<=17'd0; X<=4'd0; isDone<=1'd0; end else if(Start_Sig) case(i) 0: begin a<=A;s<=(~A+1'b1);p<={8'd0,B,1'b0};i<=i+1'b1; end 1: if(X==8) begin X<=4'd0;i<=i+4'd2; end else if(p[1:0]==2'b01) begin p<={p[16:9]+a,p[8:0]};i<=i+1'b1; end else if(p[1:0]==2'b10) begin p<={p[16:9]+s,p[8:0]};i<=i+1'b1; end else i<=i+1'b1; 2: begin p<={p[16],p[16:1]};i<=i-1'b1; end 3: begin isDone<=1'b1;i<=i+1'b1; end 4: begin isDone<=0;i<=4'd0; end endcase assign Done_Sig = isDone; assign SQ_a = a; assign SQ_s= s; assign SQ_p=p; assign Product=p[16:1]; endmodule `timescale 1 ns/ 1 ps module booth_multiplier_module_vlg_tst(); // constants // general purpose registers reg eachvec; // test vector input registers reg [7:0] A; reg [7:0] B; reg CLK; reg Start_Sig; reg reset; // wires wire [16:0] Product; wire [7:0] SQ_a; wire [16:0] SQ_p; wire [7:0] SQ_s; reg Done_Sig; // assign statements (if any) booth_multiplier_module i1 ( // port map - connection between master ports and signals/registers .A(A), .B(B), .CLK(CLK), .Product(Product), .SQ_a(SQ_a), .SQ_p(SQ_p), .SQ_s(SQ_s), .Start_Sig(Start_Sig), .reset(reset) ); initial begin reset=0; #10 reset=1; CLK<=0; forever #10 CLK=~CLK; end reg[3:0]i; always @(posedge CLK or negedge reset) if(!reset) begin i<=4'd0; A<=8'd0; B<=8'd0; Start_Sig<=1'b0; end case(i) 0://A=2,B=4 if(Done_Sig) begin Start_Sig <= 1'b0; i <= i + 1'b1; end else begin A<=8'd2;B<=8'd4; Start_Sig<=1'b1; end 1: if(Done_Sig) begin Start_Sig<=1'b0;i<=i+1'b1; end else begin A<=8'b11111100; B<=8'd4; Start_Sig<=1'b1; end 2: if(Done_Sig) begin Start_Sig<=1'b0;i<=i+1'b1; end else begin A<=8'd127; B<=8'b10000001; Start_Sig<=1'b1; end 3: if(Done_Sig) begin Start_Sig<=1'b0;i<=i+1'b1; end else begin A<=8'b10000001; B<=8'b10000001; Start_Sig<=1'b1; end 4: i<=4'd4; endcase endmodule 仿真时总是出现错误# ** Error: F:/chengxu1/booth_multiplier_module/simulation/modelsim/booth_multiplier_module.vt(79): near "<=": syntax error, unexpected "<=", expecting "IDENTIFIER" or "TYPE_IDENTIFIER" or '#' or '(' |
|
相关推荐 |
|
你正在撰写答案
如果你是对答案或其他答案精选点评或询问,请使用“评论”功能。
NVMe高速传输之摆脱XDMA设计51:主要功能测试结果与分析3 nvmePCIe高速存储 PCIe高速存储
230 浏览 0 评论
NVMe高速传输之摆脱XDMA设计50:主要功能测试结果与分析2 nvmePCIe高速存储
378 浏览 0 评论
NVMe高速传输之摆脱XDMA设计49:主要功能测试结果与分析1
1509 浏览 0 评论
935 浏览 0 评论
876 浏览 0 评论
4427 浏览 63 评论
/9
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2025-12-2 22:23 , Processed in 0.485639 second(s), Total 69, Slave 51 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191

淘帖
2030