admin 管理员组文章数量: 887007
【数电实验】汽车流动转向灯电路设计
要求:用 Verilog HDL 以层次化的设计方法,结合实验 1(需修改部分代码), 使用下文计数器模块代码“Code-1 7 进制计数器”,将计数器输出 Q 与译码器输 入 x 相连,译码器输出 codeout 锁定到实验箱的 LED 上,设计一个彩灯控制器。 LED 在控制电路的驱动下,按图 2 所示规律点亮/熄灭(●表示亮灯,○表示灭 灯)。对整体电路进行仿真,应当能够看到 en 为高电平时计数器的输出值自动增 加,相应地译码器的输出依次变化,并循环。
真值表:
en | X0 | X1 | X2 | Codeout0 | Codeout1 | Codeout2 | Codeout3 | Codeout4 | Codeout5 |
0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
1 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
1 | 0 | 0 | 1 | 0 | 0 | 0 | 0 | 0 | 1 |
1 | 0 | 1 | 0 | 0 | 0 | 0 | 0 | 1 | 1 |
1 | 0 | 1 | 1 | 0 | 0 | 0 | 1 | 1 | 1 |
1 | 1 | 0 | 0 | 0 | 0 | 1 | 1 | 1 | 1 |
1 | 1 | 0 | 1 | 0 | 1 | 1 | 1 | 1 | 1 |
1 | 1 | 1 | 0 | 1 | 1 | 1 | 1 | 1 | 1 |
module dingcengwenjian(clk,en,Q,codeout);//顶层文件 包含两个模块input clk,en;output [2:0]Q;output [5:0]codeout;comb_3(clk,en,Q);comb_4(Q,seg,codeout);
endmodule
module comb_3(clk,en,Q[2:0]);//这里一定要写分号!!!!input clk,en; // 时钟信号输入output [3:0] Q;// 计数器输出reg [2:0] count; // 计数器寄存器reg ret;
always @(posedge clk)
beginif(en)begin if (count == 3'b110) begincount <= 3'b000; end// 计数器达到6时清零else begincount <= count + 1;end // 否则加一 非阻塞赋值,后面的语句可以接着进行end
endassign Q = (en)?count:3'b000; //组合逻辑 输出计数器值 阻塞赋值后面的不能进行endmodule
module comb_4(X,seg,codeout);input [2:0]X;output seg;output reg [5:0]codeout;
always@(*) begincase(X)//这里不需要冒号3'b000:codeout<=6'b000000;3'b001:codeout<=6'b000001;//这里需要非阻塞 左边是高位右边是低位3'b010:codeout<=6'b000011;3'b011:codeout<=6'b000111;3'b100:codeout<=6'b001111;3'b101:codeout<=6'b011111;3'b110:codeout<=6'b111111;default:codeout=6'bx;endcase end
endmodule
仿真波形图:
RTL图:
本文标签: 数电实验汽车流动转向灯电路设计
版权声明:本文标题:【数电实验】汽车流动转向灯电路设计 内容由网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:http://www.freenas.com.cn/jishu/1732355415h1534294.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论