刚开始学verilog,学一点写一点。
1.亮个led灯
刚开始如下写:
module liang(output dian);
dian=1;
endmodule
在modelsim编译出错,检查dian=1;
遇到问题:赋值
查赋值语句:
-
assign语句
用于对wire型变量赋值,是描述组合逻辑最常用的方法之一。
赋值方式: 赋值变量 = 表达式; 如:assign out = in; -
过程赋值语句
用于对reg型变量赋值,过程赋值语句出现在initial和always块语 句中,有两种赋值方式:
阻塞(blocking)赋值方式: 赋值变量 = 表达式; 赋值符号为=,如 b = a ;
非阻塞(non-blocking)赋值方式: 赋值变量 <= 表达式; 赋值符号为<=,如 b <= a ;
修改后为:
module liang(output dian);
assign dian=1;
endmodule
接着到ISE里,引脚比如连为led0(具体想亮哪个查开发板相关文件即可);烧入后亮;
2.亮数码管
想着和上面一样,亮七段数码管的一段,直接把上面引脚改一下,结果并不亮,各种查,找不到这个太基础的问题,后来看别人例子,发现要有位选com,假如要让十位数字部分亮,应加入com0=1,如下:
module liangdian(
output dian,
output com0
);
assign com0=1;
assign dian=1 ;
endmodule
设置好引脚,烧入,一段亮;
继续想让数码管亮数字,其实就是组合这几段亮或暗显示出想要的数字,这里算上小数点,共8段,只显示数字只用7段,如下:
module liangdian(
output [7:0] dian,// output [7:1] dian,只显示数字
output com0
);
assign com0=1;
assign dian=8'b11111111;//assign dian=7'b1111111;这里都设为1,可见都亮,应该显示8,以及小数点
endmodule
设置好引脚,烧入,亮8,以及小数点 ;不管小数点的话,这里给出所有数字:
7’b1111110;//0
7’b0110000;//1
7’b1101101;//2
7’b1111001;//3
7’b0110011;//4
7’b1011011;//5
7’b1011111;//6
7’b1110000;//7
7’b1111111;//8
7’b1111011;//9
7’b1110111;//16进制10,以A显示
7’b0011111;//16进制11,以b显示
7’b1001110;//12,C
7’b0111101;//13,d
7’b1001111;//14,E
7’b1000111;//15,F
第一篇完