夏宇闻
发表于 2012-4-3 16:22:36
夏老师,您好,我verilog初学者,在学习中遇到个问题想请教您
我最近做一个加法器通过串口通信实现,发送和 ...
hjchen 发表于 2012-3-28 12:53 http://www.fpgaw.com/images/common/back.gif
你如果没有认真读过并彻底理解我书上第16章和第17章的内容,不要开始做任何比较复杂的项目。因为你不能理解数字系统的基本设计方法,我也无从下手来指导您的设计。读懂这二章中每一段代码的细节,按思考题要求独立编写一个页面读写的接口和多几条指令的RlSC CPU,否则您不可能理解真实的设计途径,自己乱写,没办法验证,如何能设计出功能完善正确的电路呢? 要理解设计方法学的概念,不仅仅是语法,这是一个完整的设计体系,可以帮助您发现问题改进设计直至完善。
夏宇闻
发表于 2012-4-3 16:23:32
夏老师,您好:
我是刚学Verilog不久,最近一直在研究FPGA的串口通讯问题,但是编写的接收程序不能 ...
Newrenlan 发表于 2012-3-31 14:57 http://www.fpgaw.com/images/common/back.gif
你如果没有认真读过并彻底理解我书上第16章和第17章的内容,不要开始做任何比较复杂的项目。因为你不能理解数字系统的基本设计方法,我也无从下手来指导您的设计。读懂这二章中每一段代码的细节,按思考题要求独立编写一个页面读写的接口和多几条指令的RlSC CPU,否则您不可能理解真实的设计途径,自己乱写,没办法验证,如何能设计出功能完善正确的电路呢? 要理解设计方法学的概念,不仅仅是语法,这是一个完整的设计体系,可以帮助您发现问题改进设计直至完善。
夏宇闻
发表于 2012-4-3 16:24:45
回复fpgaw
我要做一个动态可重构,用两个FPGA实现两种算法的动态切换,也就是用一个FPGA控制另一个FPGA ...
science361 发表于 2012-3-31 19:29 http://www.fpgaw.com/images/common/back.gif
你如果没有认真读过并彻底理解我书上第16章和第17章的内容,不要开始做任何比较复杂的项目。因为你不能理解数字系统的基本设计方法,我也无从下手来指导您的设计。读懂这二章中每一段代码的细节,按思考题要求独立编写一个页面读写的接口和多几条指令的RlSC CPU,否则您不可能理解真实的设计途径,自己乱写,没办法验证,如何能设计出功能完善正确的电路呢? 要理解设计方法学的概念,不仅仅是语法,这是一个完整的设计体系,可以帮助您发现问题改进设计直至完善。
夏宇闻
发表于 2012-4-3 16:26:22
夏老师 ,您好 我用的 DE4(Stratix IV GX EP4SGX230)开发板,其中有个例子调用了altpll和altgx 不知道怎么 ...
tjy389945230 发表于 2012-4-2 20:16 http://www.fpgaw.com/images/common/back.gif
你如果没有认真读过并彻底理解我书上第16章和第17章的内容,不要开始做任何比较复杂的项目。因为你不能理解数字系统的基本设计方法,我也无从下手来指导您的设计。读懂这二章中每一段代码的细节,按思考题要求独立编写一个页面读写的接口和多几条指令的RlSC CPU,否则您不可能理解真实的设计途径,自己乱写,没办法验证,如何能设计出功能完善正确的电路呢? 要理解设计方法学的概念,不仅仅是语法,这是一个完整的设计体系,可以帮助您发现问题改进设计直至完善。
zx023c110
发表于 2012-4-3 21:46:53
夏老师:
你好,我想请问一个关于ram的问题;
ram ram(
.addr(addr_in),
.clk(clk_r)'
.
.
.);
这样构建的一个ram就具有了存储功能吗,不用编写他的具体功能实现吗??
夏宇闻
发表于 2012-4-5 12:04:18
夏老师:
你好,我想请问一个关于ram的问题;
ram ram(
.addr(addr_in),
...
zx023c110 发表于 2012-4-3 21:46 http://www.fpgaw.com/images/common/back.gif
当然要有具体的功能描述模块为基础,这个实例引用才能起作用。具体功能模块可以是自己用行为语句描述的模块,也可以是引用宏库中现成的模块,这样就不用自己编写,但在仿真时必须编译该模块的代码并加载后才能显示其功能。
开心果
发表于 2012-4-5 15:21:45
夏老师!!您好!!我刚开始学verilog,这是我写的AD芯片的TCL549的驱动程序,可是一直不好用,请您看看哪里错了?
modulead_convert(
clk, //系统时钟50MH
rst_n, //复位信号
adc_clk, //AD转换时钟
adc_data, //输出的AD数据
adc_cs_n, //AD片选信号
digit_o, //数码管段选信号
cs //数码管位选信号
);
input clk;
input rst_n;
input adc_data;
output adc_clk;
output adc_cs_n;
output digit_o;
output cs;
reg count;
reg clk_64;
always @(posedge clk)
begin
count<=count+1;
if(count==0)
clk_64<=~clk_64;
end
assign adc_clk=clk_64;
integer i;
parameter
ini = 10'b1000000000,
waite = 10'b0100000000,
conver_1 = 10'b0010000000,
conver_2 = 10'b0001000000,
conver_3 = 10'b0000100000,
conver_4 = 10'b0000010000,
conver_5 = 10'b0000001000,
conver_6 = 10'b0000000100,
conver_7 = 10'b0000000010,
conver_8 = 10'b0000000001;
reg state,state_next;
reg cnt;
reg num;
reg adc_cs_n;
initial state_next<=ini;
always @ (posedge clk_64 or negedge rst_n)
begin
if(!rst_n)
state<=ini;
else
begin
state<=state_next;
end
end
reg cs_n,digit;
always @ (state)
begin
case(state)
ini : begin
num<=num+1;
adc_cs_n<=0;
if(num==0)
begin
// adc_cs_n<=0;
state_next<=conver_1;
end
end
conver_1 : begin
// adc_cs_n<=0;
digit<=adc_data;
state_next<=conver_2;
end
conver_2 : begin
// adc_cs_n<=0;
digit<=adc_data;
state_next<=conver_3;
end
conver_3 : begin
// adc_cs_n<=0;
digit<=adc_data;
state_next<=conver_4;
end
conver_4 : begin
// adc_cs_n<=0;
digit<=adc_data;
state_next<=conver_5;
end
conver_5 : begin
// adc_cs_n<=0;
digit<=adc_data;
state_next<=conver_6;
end
conver_6 : begin
// adc_cs_n<=0;
digit<=adc_data;
state_next<=conver_7;
end
conver_7 : begin
// adc_cs_n<=0;
digit<=adc_data;
state_next<=conver_8;
end
conver_8 : begin
// adc_cs_n<=0;
digit<=adc_data;
state_next<=waite;
end
waite : begin
cnt<=cnt+1;
adc_cs_n<=1;
if(cnt==0)
begin
state_next<=ini;
end
end
default: state_next<='bx;
endcase
end
nixie_light(0,digit,cs,digit_o);
endmodule
转换时钟小于17us
开心果
发表于 2012-4-5 15:22:03
夏老师!!您好!!我刚开始学verilog,这是我写的AD芯片的TCL549的驱动程序,可是一直不好用,请您看看哪里错了?
modulead_convert(
clk, //系统时钟50MH
rst_n, //复位信号
adc_clk, //AD转换时钟
adc_data, //输出的AD数据
adc_cs_n, //AD片选信号
digit_o, //数码管段选信号
cs //数码管位选信号
);
input clk;
input rst_n;
input adc_data;
output adc_clk;
output adc_cs_n;
output digit_o;
output cs;
reg count;
reg clk_64;
always @(posedge clk)
begin
count<=count+1;
if(count==0)
clk_64<=~clk_64;
end
assign adc_clk=clk_64;
integer i;
parameter
ini = 10'b1000000000,
waite = 10'b0100000000,
conver_1 = 10'b0010000000,
conver_2 = 10'b0001000000,
conver_3 = 10'b0000100000,
conver_4 = 10'b0000010000,
conver_5 = 10'b0000001000,
conver_6 = 10'b0000000100,
conver_7 = 10'b0000000010,
conver_8 = 10'b0000000001;
reg state,state_next;
reg cnt;
reg num;
reg adc_cs_n;
initial state_next<=ini;
always @ (posedge clk_64 or negedge rst_n)
begin
if(!rst_n)
state<=ini;
else
begin
state<=state_next;
end
end
reg cs_n,digit;
always @ (state)
begin
case(state)
ini : begin
num<=num+1;
adc_cs_n<=0;
if(num==0)
begin
// adc_cs_n<=0;
state_next<=conver_1;
end
end
conver_1 : begin
// adc_cs_n<=0;
digit<=adc_data;
state_next<=conver_2;
end
conver_2 : begin
// adc_cs_n<=0;
digit<=adc_data;
state_next<=conver_3;
end
conver_3 : begin
// adc_cs_n<=0;
digit<=adc_data;
state_next<=conver_4;
end
conver_4 : begin
// adc_cs_n<=0;
digit<=adc_data;
state_next<=conver_5;
end
conver_5 : begin
// adc_cs_n<=0;
digit<=adc_data;
state_next<=conver_6;
end
conver_6 : begin
// adc_cs_n<=0;
digit<=adc_data;
state_next<=conver_7;
end
conver_7 : begin
// adc_cs_n<=0;
digit<=adc_data;
state_next<=conver_8;
end
conver_8 : begin
// adc_cs_n<=0;
digit<=adc_data;
state_next<=waite;
end
waite : begin
cnt<=cnt+1;
adc_cs_n<=1;
if(cnt==0)
begin
state_next<=ini;
end
end
default: state_next<='bx;
endcase
end
nixie_light(0,digit,cs,digit_o);
endmodule
转换时钟小于17us
夏宇闻
发表于 2012-4-6 05:40:16
夏老师!!您好!!我刚开始学verilog,这是我写的AD芯片的TCL549的驱动程序,可是一直不好用,请您看看哪里 ...
开心果 发表于 2012-4-5 15:22 http://www.fpgaw.com/images/common/back.gif
错的地方很多,看来您读书不仔细,语法和可综合性问题您没有理解,测试模块也没有见到,可见您对数字系统的设计方法还没有入门。您读的是哪一本书?建议您从头到尾认真读一遍我编写的Verilog数字系统设计教程第二版,理解每个例题和思考题后再开始做设计项目。
开心果
发表于 2012-4-6 09:16:15
回复 298# 夏宇闻
谢谢夏老师