fpga | External Reference
一种matlab调用signaltap采集数据的方法
http://bbs.ednchina.com/BLOG_ARTICLE_3001675.HTM 最近,在利用FPGA采集数据,前端是通过AD采集,然后直接输出给FPGA,需要分析采集到的数据,通常的办法只能在signaltap中,右击信号列表然后点击”Create SignalTap II List File”生成数据文件,操作如图1所示,图2为生成的数据文件,处理数据时先将文件中所有数据拷贝到ultraedit中,然后通过列模式提取需要处理的那列数据,拷贝到matlab中进行后续分析处理。
![]() 图1
![]() 图2 上述操作方法过程比较繁琐,主要是手动操作比较多,如果需要采集的数据较多,则需要多次重复操作,真是体力活儿啊,难免然操作者产生厌烦心理。下面介绍一种通过matlab直接调用signaltap采集数据的方法。 在matlab端只需要一下语句: addpath ('d:/altera/11.0sp1/quartus/bin'); din = alt_signaltap_run('stp1.stp','signed'); alt_signaltap_run('END_CONNECTION'); 其中addpath语句是将quartus软件路径加入进来;alt_signaltap_run语句执行数据的采集工作,当然此时对应的*.sof文件应该已经下载到FPGA中了,’signed’返回的是有符号数据;alt_signaltap_run('END_CONNECTION')语句表示断开由matlab建立的jtag连接。 采用此方法,无需打开signaltap,matlab直接获取数据进行处理,免除了大量重复的手动操作,大大提高了工作效率。 |
Untitle[博客大赛]CPLD入门笔记1----点亮LEDd Post
http://bbs.ednchina.com/BLOG_ARTICLE_3019841.HTM 今天看了CPLD的教程,发现可编程芯片几乎都是以点亮LED作为最开始的入门实验,无论51单片机、STM8单片机、STM32单片机亦或是其他的芯片,感觉都是在控制它的引脚的电平,主要是了解如何让指定的引脚输出指定数的脉冲,指定的电平。好了,不多说了,看下代码,实现3个LED的轮番点亮 计时一个单位时间,让LED0点亮,后进行移位,移位后等待下一个单位时间到来,便点亮LED1,后再移位,依次进行 module CPLD_LED_Delay(clk,rst_n,LED0,LED1,LED2); input clk; input rst_n; output LED0,LED1,LED2; reg[23:0] Counter; //定义计数器,设置为寄存器类型 //如果复位按键,计数器清零,否则进行计数 always @(posedge clk or negedge rst_n) if(!rst_n) Counter <= 1'd0; else Counter <= Counter + 1'b1; reg[2:0] led_reg; //如果Counter计数到值, always @(posedge clk or negedge rst_n) if(!rst_n) led_reg <= 4'b001; else if(Counter == 24'd15_000_000) begin if(led_reg == 4'b100) led_reg <= 4'b001; else led_reg <= led_reg << 1; //led_reg执行左移一位 end assign {LED2,LED1,LED0} = led_reg; endmodule 代码很简单,不用多解释 对“{}”的一点理解,例如assign {LED2,LED1,LED0} = led_reg;,如果变量led_reg = 100;则LED2 = 1,LED1= 0,LED0 = 0; 另外,若assign Num = {Numa , Numb}; Numa = 1010,Numb = 0110; 则Num = 1010 0110; |
FPGA power consumption
http://bbs.ednchina.com/BLOG_ARTICLE_3019406.HTM
|
Verilog For
http://bbs.ednchina.com/BLOG_ARTICLE_3019676.HTM?click_from=8800020767,8914786776,2014-04-07,EDNCOL,NEWSLETTER
|