HDLBits1-4学习笔记
标题:HDLBits在线学习Verilog(1)
链接:https://zhuanlan.zhihu.com/p/56943774
内容:
1、介绍代码编写的流程(写代码、编译、仿真、结果)
2、文件名Example1Hdlbits.v
//module top_module(output one);这行代码有错,原因在于.v文件里的模块名和顶层实体名不一致
//https://blog.csdn.net/ocean1171597779/article/details/25885105
//例子1:构建一个电路,没有输入端口,只有一个输出端口,输出端口时钟驱动逻辑1,即逻辑高
module Example1Hdlbits(output one);
//Insert your code here
assign one = 1'b1;
endmodule
//例子2:构建一个电路,没有输入端口,只有一个输出端口,输出端口时钟驱动逻辑0,即逻辑低
module Example1Hdlbits(output zero);
//Insert your code here
assign zero = 1'b0;
endmodule
//在quartus中,输出端口默认赋值为0
module Example1Hdlbits(output zero);
endmodule
//wire应该理解为一个信号,信号是有方向性的,wire从A点输出,输入到B点和C点。
//wire一般是只有一个source,即从某一点输出,但可以有多个sinks,即输入到多个点。
//A点通常会被称为一个驱动(driver),把某个值驱动到wire上。
assign left_side = right_side;//right_side的值就被驱动到left_side中,以上的语法结构名为连续赋值continue assignment
//verilog中的赋值是使用一条带有方向的导线连接了两个信号,所以left_side始终等于right_side,随right_side变化而变化
//模块中的端口也带有方向性,主要分为输入input和输出output端口。输入端口是由模块外部的信号驱动的,而输出端口则又会驱动另一个外部信号
//例3:学习wire,使用assign将输入端口的值赋给输出端口
module Example1Hdlbits(input in, output out);
assign out = in;
endmodule
//例4:创建一个三输入四输出的模块,用wire将他们连接起来a -> w |b -> x|b -> y|c -> z
module Example1Hdlbits(input a,b,c, output w,x,y,z);
//上面的语句相当于module Example1Hdlbits(input wire a,b,c, output wire w,x,y,z);
assign w=a;
assign x=b;
assign y=b;
assign z=c;
endmodule
//多条assign语句的执行顺序是并行执行
//wire不是连线本身,而是连线两端的信号
//例5:非门notgate 创建一个非门模块
module Example1Hdlbits(input in output out);
assign out=~in;//assign语句中增加的逻辑操作符为~(逐位取反),由于我们的信号位宽为1位,我们也可以用逻辑取反
endmodule
posted on 2022-03-06 17:47 Curtis_Lee 阅读(73) 评论(0) 编辑 收藏 举报
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY