FPGA 学习笔记
来源:互联网 发布:求50个的素数编程 编辑:程序博客网 时间:2024/06/10 17:07
1. 计数器学习
module my_counter(clk,rstn,led);
input clk;
input rstn;
output reg led;
reg[24:0] count;
always@(posedge clk,negedge rstn)
if(rstn == 1'b0)
count = 1'b0;
else if(count == 25'd5000)
count = 1'b0;
else count = count + 1'b1;
always@(posedge clk,negedge rstn)
if(rstn == 1'b0)
count = 1'b0;
else if(count == 25'd5000)
led = ~led;
else led = led;
endmodule
编译时报错:Error (10028): Can't resolve multiple constant drivers for net "count[22]" at my_counter.v(12)
原因:两个进程里都有同一个条件判断的话,会产生并行信号冲突的问题,同一个信号不允许在多个进程中赋值,否则则为多驱动,进程的并行性决定了多进程不能对同一个对象进行赋值。在此例中,两个always语句里面都对count信号赋值了,而两个always是并行快,所以提示出现多重驱动的情况。
修改后的代码如下(编译无错误):
module my_counter(Clk,Rst_n,led);
input Clk;
input Rst_n;
output reg led;
reg[24:0] cnt;
always@(posedge Clk,negedge Rst_n)
if(Rst_n == 1'b0)
cnt = 25'd0;
else if(cnt == 25'd5000)
cnt = 25'd0;
else cnt = cnt + 1'b1;
always@(posedge Clk,negedge Rst_n)
if(Rst_n == 1'b0)
led = 1'b0;
else if(cnt == 25'd5000)
led = ~led;
else led = led;
endmodule
2. 38译码器学习
Module my_38circuit(a,y);
input [2:0]a;
output reg [7:0]y;
always@(*) // * 表示对后面所有的输入变量是敏感的
begin
case(a[2:0])
3'b000: y = 8'b0000_0001; //always 中的赋值变量必须定位为reg类型
3'b001: y = 8'b0000_0010;
3'b010: y = 8'b0000_0100;
3'b011: y = 8'b0000_1000;
3'b100: y = 8'b0001_0000;
3'b101: y = 8'b0010_0001;
3'b110: y = 8'b0100_0001;
3'b111: y = 8'b1000_0001;
default:y = 8'b0000_0000;
endcase //case ......endcase 要配对,begin ....end 也要配对
end
endmodule
- FPGA学习笔记
- FPGA 学习笔记
- FPGA学习笔记1
- FPGA学习笔记敬请期待
- HELLO FPGA学习笔记
- FPGA学习笔记
- FPGA学习笔记
- FPGA 学习笔记
- Altera FPGA/CPLD 学习笔记
- FPGA\CPLD设计学习笔记
- FPGA学习笔记4-VHDL
- FPGA\CPLD设计学习笔记
- FPGA学习笔记(转)
- xilinx fpga学习笔记1
- xilinx fpga学习笔记2
- xilinx fpga学习笔记3
- xilinx fpga学习笔记4
- FPGA学习笔记一(数码管显示)
- Oracle的连接详解(左连接、右连接、全连接...)
- 第十二周——项目一最短路径(3)Dijkstra算法的验证(从一个顶点到其余各顶点的最短路径)
- 支付宝的服务器端的开发流程
- 【第十一周】项目4
- fstream,sstream的学习记录(备忘)
- FPGA 学习笔记
- redis数据备份,迁移
- 第十一周——项目一—图及其存储结构(邻接矩阵、邻接表)算法库
- ios获取网络请求失败相关数据
- 【十八掌●武功篇】第八掌:HBase之基本操作Java API
- OpenCV移植到ARM(4)
- CoreMatchers和Assert配合做junit
- win10无法删除卷的解决办法
- Java中Long、String、Date 类型之间的转换