资源描述:
《verilog_hdl_四位移位乘法器》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、实验五 四位移位乘法器一、实验代码:(led显示)modulemult(mul,a,b);output[7:0]mul;//inputckl;input[3:0]a,b;reg[7:0]mul;wire[3:0]out1,out2,out3,out4;//wire[3:0]out2;//wire[3:0]out3;//wire[3:0]out4;//如果always快里有问题,用clk进行延时接受,确保无问题reg[7:0]temp=8'b0;reg[7:0]temp_mul=8'b0;multplycheng1(out1,a,b[3]);mul
2、tplycheng2(out2,a,b[2]);multplycheng3(out3,a,b[1]);multplycheng4(out4,a,b[0]);always@(aorb)begintemp={4'b0,out1};temp_mul=temp<<1;temp={4'b0,out2};temp_mul=temp_mul+temp;temp_mul=temp_mul<<1;temp={4'b0,out3};temp_mul=temp_mul+temp;temp_mul=temp_mul<<1;temp={4'b0,out4};mul=tem
3、p_mul+temp;endendmodulemodulemultply(out,mul4,mul1);output[3:0]out;input[3:0]mul4;inputmul1;reg[3:0]out;reg[3:0]tem;always@(mul4ormul1)begincase(mul1)1'b0:tem=4'b0;default:tem=mul4&4'b1111;endcaseout=tem;endendmodule二、管脚配置:通过拨动输入:a[0]inputPIN_200a[1]inputPIN_202a[2]inputPIN_2
4、03a[3]inputPIN_204b[0]inputPIN_205b[1]inputPIN_206b[2]inputPIN_207b[3]inputPIN_208led灯输出:mul[0]outputPIN_191mul[1]outputPIN_192mul[2]outputPIN_193mul[3]outputPIN_195mul[4]outputPIN_196mul[5]outputPIN_197mul[6]outputPIN_198mul[7]outputPIN_199一、实验连线:通过拨动输入:K1-K8:11-18Led灯显示连线:L
5、1-L8:3-10二、电路工作原理手动拨动,开关k1-k8,根据Led灯的显示,亮表示1,不亮表示0来看结果。三、实验问题当用八段译码显示管,利用十六进制来表示结果时,遇到一些问题,无法操作成功。总是要么同时选通但只显示一个,要么就是只选通一个。八段译码显示管显示:modulemult(mul,outa,outb,a,b,clk);output[7:0]mul;outputouta,outb;inputclk;input[3:0]a,b;regouta;regoutb;reg[7:0]mul;regte;wire[3:0]out1,out2,ou
6、t3,out4;reg[7:0]temp=8'b0;reg[7:0]temp_mul=8'b0;multplycheng1(out1,a,b[3]);multplycheng2(out2,a,b[2]);multplycheng3(out3,a,b[1]);multplycheng4(out4,a,b[0]);/*always@(posedgeclk)beginif(te==0)beginoutb<=~outb;outa<=~outa;te=te+1;endendalways@(posedgeclk)beginif(te==30)beginout
7、a=outb;outb=~outb;te=te+1;endelseif(te==60)beginoutb=outa;outa=~outa;te=0;endelsebeginte=te+1;endend*/always@(posedgeclk)beginif(te<256)te=te+1;elsebeginte=0;outb=~outa;outa=~outa;outb=~outb;endendalways@(aorb)begintemp={4'b0,out1};temp_mul=temp<<1;temp={4'b0,out2};temp_mul=t
8、emp_mul+temp;temp_mul=temp_mul<<1;temp={4'b0,out3};temp_mul=temp_mul