
inpput [9:0] a
input [9:0] b//以1023以内的加减乘除举例
input option1,option2,option3,option4//四个按键,低电有效
//数字也不是这么表达的,而是每个按键对应一个数字,后一个按下前一个还要个位变十位
//为了简化,这么写的。你自己要想明白。可综合计算器程序也不是几十行就能明指描述的
output led_result//显示屏上的led显示数字,只显示结果
//每一步衡好按下数字按理也要显示,这里不赘述了
reg[19:0] result
reg a_r,b_r/咐槐铅/锁存两个 *** 作数
reg option1_r,option2_r,option3_r,option4_r//锁存 *** 作运算,防止手指抬起时复位”1“
always
begin
a_r=a
b_r=b
end
always @(a or b or option) //如果任何一个键值按下。
begin
if(!option1_r) ///如果加法运算
result=a_r+b_r
。。。
。。。
assign led_result=result//这句是错的。只是为了直观表达连续赋值语句在led那里显示
....
endmodule
module clk_div(clk,out1,out2)input clk
output out1,out2
reg out1,out2
reg [31:0]cnt1,cnt2
always @(posedge clk)begin//50MHz分频计肢宽和数
if(cnt1<32'd24999999)
cnt1 <=cnt1 + 32'巧缓d1
else
cnt1 <=32'd0
end
always @(posedge clk)//分频历盯后的半周期反转
if(cnt1 == 0)
out1<=~out1
always @(posedge clk)begin//5MHz分频计数
if(cnt2<32'd4999999)
cnt2 <=cnt2 + 32'd1
else
cnt2 <=32'd0
end
always @(posedge clk)//20%占空比
if(cnt2 == 32'd999999)
out2<=0
else if(cnt2 == 32'd4999999)
out2<=1
endmodule
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)