module bin2dec(V,HEX1,HEX0)
input [3:0]V
output
[0:6]HEX1,HEX0
wire z //comparator output
wire [2:0]a
//circuit A output
wire [3:0]m
//multiplexer output
comparator
C(V,z)
circuita
A(V[2:0],a)
mux_4b_2to1
M(V,{1'b0,a},z,m)
circuitb
B(z,HEX1)
btd
D(m,HEX0)
endmodule
module circuitb(z,seg)
input z
output
[0:6]seg
assign
seg[6]=1
assign
seg[5]=z
assign
seg[4]=z
assign
seg[3]=z
assign
seg[2]=0
assign
seg[1]=0
assign
seg[0]=z
endmodule
module
mux_4b_2to1(x,y,s,m)
input [3:0]x
input [3:0]y
input s
output
[3:0]m
mux_2to1
u3(x[3],y[3],s,m[3])
mux_2to1
u2(x[2],y[2],s,m[2])
mux_2to1
u1(x[1],y[1],s,m[1])
mux_2to1
u0(x[0],y[0],s,m[0])
endmodule
module
mux_2to1(a,b,s,m)
input a,b,s
output m
assign
m=s?b:a
endmodule
module
circuita(v,a)
input [2:0]v
output [2:0]a
assign
a[2]=v[2]&v[1]
assign
a[1]=v[2]&~v[1]
assign
a[0]=(v[1]&v[0])|(v[2]&v[0])
endmodule
//circuit
comparator
module
comparator(v,z)
input [3:0]v
output z
assign
z=(v[3]&v[2])|(v[3]&v[1])
endmodule
你好!你所要求的全部功能我已实现!
模块图:
程序用4位数码管显示,Bit[0]为最右边一位,Rstn为全局复位,Key1为减速,Key2为加速,初始默认显示为1Hz。如:前半个周期显示45,则后半个周期显示-09(按要求2做小标记“-”加以区分)。(由于时间关系)程序中少许警告可以无视,当然你可以自己优化下代码。
显示效果图:显示0+9的结果为“-09”
如果这是你的课程设计,请绝对放心这是独一无二的,因为这是我花费数个小时的原创……
请采纳!!如果能追加分数就更好了哦!(*^__^*)
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)