jessie9940509
发表于 2011-12-21 19:34:19
夏宇闻老师,各位前辈高人,FPGA 与DSP并口通信的问题
夏宇闻老师,各位前辈高人:
我正在做FPGA 与DSP并口通信,就是把FPGA 当做SRAM一样的读写,但是仿真不对,麻烦给看看代码,哪里的问题呢?
module CommandOperate(resetcommandmainprocess,
DSP_DATA,DSP_ADDR,dsp_we,dsp_rd,cs_fpga,
LED1);
input resetcommandmainprocess;
input dsp_we,dsp_rd,cs_fpga;
inoutDSP_DATA;
input DSP_ADDR;
output LED1;//LED2;
/////////////////////////////////////////
reg Reg_LED1;//Reg_LED2;
reg rd_data;
always @(posedge dsp_rd or posedge resetcommandmainprocess )
begin
if (resetcommandmainprocess) begin
rd_data<= 16'bzzzz_zzzz_zzzz_zzzz;
end
else if (( DSP_ADDR == 5'b11000)&&(cs_fpga == 0))
rd_data<= Reg_LED1;
else rd_data<= 16'bzzzz_zzzz_zzzz_zzzz;
end
assign DSP_DATA=rd_data ;
///////////////////////////////////////////////
always @(posedge dsp_we or posedge resetcommandmainprocess)
begin
if (resetcommandmainprocess)begin
Reg_LED1<=16'h0000;
end
else if(( DSP_ADDR == 5'b11000)&&(cs_fpga == 0))
Reg_LED1<= DSP_DATA;
end
assign LED1=1'b1;//Reg_LED1;
endmodule
夏宇闻
发表于 2011-12-22 01:04:52
本帖最后由 夏宇闻 于 2011-12-22 01:13 编辑
夏宇闻老师,各位前辈高人,FPGA 与DSP并口通信的问题
夏宇闻老师,各位前辈高人:
我正在做FPGA 与DSP并 ...
jessie9940509 发表于 2011-12-21 19:34 http://www.fpgaw.com/images/common/back.gif
您应该认真读一遍我编写的书中关于三态总线的那一节。可综合模块不能给寄存器变量赋高阻值,只能给它赋1或0,来控制三态门的开关。您似乎对硬件缺乏了解,必须先搞清电路结构,才能写出行为正确又可综合的电路。看您的程序知道您没有认真读过数字系统设计的书,程序中没有硬件的构造、沿触发时钟状态机产生控制电平的概念,设计思想混乱。
jessie9940509
发表于 2011-12-22 08:19:13
本帖最后由 夏宇闻 于 2011-12-22 14:03 编辑
老师太好了。能跟您这样交流,我好高兴啊。我这就去研究去,及时跟您汇报。我以前是用单片机的,51 avr armdsp 都用过,但是都要使用C写,大同小异。这个FPGA 刚接触,思路完全不一样。我有很多编程想法,却不知道怎么实现。还得多练,多跟您学习啊。
夏老师答:有单片机基础对学习FPGA很有帮助。但编程习惯要改变,从顺序执行思考改为并行处理思考,从单纯的数据流思考改为数据流和控制流的思考。还要考虑存储单元的位置区域和读写方式,数据的同步和精度问题,运算的速度问题,设计思考更立体、更全面,因而水平更高,难度更大。
jessie9940509
发表于 2011-12-22 09:02:34
老师,按照你说的,我又去看了你的书,问题解决了。我买了8本FPGA的书,只有你的那本蓝书最全。适合于应用。哈哈。以后有问题还得请教老师。
老师还想请教你下,我看你写的例子里(那I2C),子程序都是用的任务来写的,但我看有的书上说任务不可以综合,还有的说任务不知道会综合处什么,我要做的东西也要有很多子程度,不知道可以用这个写不?
夏宇闻
发表于 2011-12-22 13:51:30
老师,按照你说的,我又去看了你的书,问题解决了。我买了8本FPGA的书,只有你的那本蓝书最全。适合于应用。 ...
jessie9940509 发表于 2011-12-22 09:02 http://www.fpgaw.com/images/common/back.gif
任务其实就是一段程序,只不过把这段程序起个名字罢了,如果程序是可综合的,用这段程序定义的任务也是可以综合的。
jessie9940509
发表于 2011-12-22 18:41:40
谢谢夏老师,我再去充充电
qq376784106
发表于 2011-12-23 19:08:13
本帖最后由 夏宇闻 于 2011-12-24 05:25 编辑
夏老师您好!我在用quartus自带的浮点乘法器的IP核遇到这样一个问题,就是乘法器的输入是两组数据对应相乘,每组数据64个点,为什么出来的数据总是末尾少四个呢,我设置的乘法器的数据运算时延是5,这个与数据运算时延有关系吗?谢谢老师!!!
夏老师答:浮点运算器运算是否正确与运算延时肯定有关系。您多试几组数据,用不同的时延设置试一下就知道了。
lijxok
发表于 2011-12-26 10:28:45
本帖最后由 夏宇闻 于 2011-12-26 19:51 编辑
夏老师您好!学校有个设计的题目是基于FPGA的图像采集系统,要求实现对单路视频的采集,大于等于25帧每秒的图像数据输出,这个题有什么比较简单的实现方法吗?就是没有什么多余的功能的。
谢谢老师!
夏老师答:图像的分辨度是多少?24位真彩色,还是其他形式的彩色或单色?图像如何保存、传送和显示…,还有许多许多问题必须明确才能动手设计。如摄象芯片采用什么型号?数据如何传递?串行、并行、还是LVDS信号?…如果老师出这样笼统的设计题,说明这个老师不懂设计,也不知道真要设计一个有使用价值的项目。
zombes
发表于 2011-12-31 17:17:50
本帖最后由 夏宇闻 于 2012-1-2 06:49 编辑
夏老师:新年快乐!
问题:状态机有时候会很复杂,尤其是分支跳转多的情况,需要使用多个嵌套的if进行判断,那么,这个嵌套的格式会对时序造成什么样的影响?其建立保持时间会不会不满足?如何解决这个问题呢?
夏老师答:在开始编写状态机前一定先认真分析需要多少状态,这些状态之间的层次关系,尽可能用多个简单的状态机,通过不同状态机之间的层次关系来表达复杂的状态逻辑,这样每个独立的FSM不会很大,综合后的电路也不复杂,但总的状态机可以十分复杂,但它是由小的多层次的多个同步时钟触发的FSM构成,由于综合器对同步时钟状态机的分析转换和优化技术已十分成熟,按样板编写的状态机综合后生成的电路是相当可靠的。编写FSM时,尽可能按标准样板编写,不要独出新裁。
风中的承诺
发表于 2012-1-17 17:18:39
本帖最后由 夏宇闻 于 2012-1-24 03:46 编辑
回复 225# 夏宇闻
夏老师:
你好,最近我一直在调试TFT显示图片,图片数据量太大,FPGA内部ROM不够。不知道怎么存储,我想了两种方法,一种是把数据直接烧写到扩展FLASH,但不知道怎么烧写,数据文件是bin或是hex,mif格式。第二种是在nios2下实现,采用了外部的SDRAM,将数据直接放在数组中,但这种方法也没有调试过。请教夏老师,有什么好的方法?
夏老师答:
我建议采用外部SDRAM,再加上采用嵌入式处理器核,例如,Niosii或其他CPU核,我几年前编写的书,高级verilogSOPC实验教程,中有TFT图片显示的设计举例。您可以参考模仿。现在高版本的Quartus已经用Qsys来代替SopcBuild,新工具应该比原来的好用一些,也许有FLASH接口的宏模块,但我还没用过。您可以自己摸索,如果设有具体例子指导,把设计调试通过,直到满足客户要求是很费时间的,但也很锻炼人,可测试您解决问题的毅力。