奔月F1矿机fpga
㈠ FPGA设计低通滤波器,Modelsim仿真滤波干净,实际使用时滤波了波,求帮助。
楼主,请问一下你的测试文件怎么写的,我在matlab写了这几句,然后导出.txt文件
clear all;
clc;
fs=1000;
f1=30;
f2=100;
f3=150;
t0=1;
t=0:1/fs:(t0*fs-1)/fs;
x1=sin(2*pi*f1*t);
x2=sin(2*pi*f2*t);
x3=sin(2*pi*f3*t);
x=x1+x2+x3;
在modsim仿真始终出不来波形,不知道是什么问题,我的输入时16位,而导出数据宽度
0
2.06909
2.12663
0.530249
-0.587785
是不是位数不同原因?
㈡ 跪求一基于VHDL语言写的LCD12864显示程序,是用FPGA的1C6芯片,邮箱[email protected],希望有好心人帮忙,急需
-------------12864液晶的显示-----------
----时钟:10MHZ
library ieee;
use ieee.std_logic_1164.all;
use ieee.std_logic_unsigned.all;
entity lcd12864 is
generic(
divide_500k:integer:=20;--20分频后:500KHZ:2us
cnt1_value:integer:=50
);
port(
clk,reset:in std_logic;
rs,rw,en:out std_logic;
data:out std_logic_vector(7 downto 0)
);
end entity;
architecture behavior of lcd12864 is
type word is array(0 to 3) of std_logic_vector(7 downto 0);--因为大家的习惯,数组中的左起第1个数为数组中的最低位对应的数,所以设置为array(0 to 3),而不是array(3 downto 0)。此处若不注意,容易出错。
type state is(
set_dlnf1,set_dlnf2,set_cursor,set_dcb,set_shift,
set_ddram,
write_name,
over
);
constant name:word:=("11010110","11010000","10111001","11111010");--中D6D0 国B9FA
--constant name:word:=("11010000","11101100","10111110","10101001");--徐D6D0 京B9FA
signal pr_state:state;
signal newclk:std_logic;
begin
process(clk) is
variable num:integer range 0 to divide_500k;
begin
if(clk'event and clk='1')then
num:=num+1;
if(num=divide_500k) then
num:=0;
end if;
if(num<divide_500k/2) then--设置占空比
newclk<='0';
else newclk<='1';
end if;
end if;
end process;
process(newclk,reset,pr_state) is
variable cnt1:integer range 0 to 100*cnt1_value:=0;
variable cnt2:integer range 0 to 100:=0;
begin
if(reset='0') then
pr_state<=set_dlnf1; --把状态set_dlnf1赋于pr_state
cnt1:=0;
cnt2:=0;
en<='0';
data<="ZZZZZZZZ";
elsif(newclk'event and newclk='1') then
case pr_state is
when set_dlnf1=>
cnt1:=cnt1+1;
if(cnt1<cnt1_value) then
en<='0';
rs<='0'; --命令
rw<='0'; --写
elsif(cnt1<2*cnt1_value) then
data<="00110000"; --选择8位数据基本指令集:0x30
elsif(cnt1<20*cnt1_value) then
en<='1';
elsif(cnt1=20*cnt1_value) then
en<='0';
cnt1:=0;
pr_state<=set_dlnf2;
end if;
when set_dlnf2=>
cnt1:=cnt1+1;
if(cnt1<cnt1_value) then
en<='0';
elsif(cnt1<2*cnt1_value) then
data<="00110000"; --选择8位数据基本指令集:0x30
elsif(cnt1<20*cnt1_value) then
en<='1';
elsif(cnt1=20*cnt1_value) then
en<='0';
cnt1:=0;
pr_state<=set_cursor;
end if;
when set_cursor=>
cnt1:=cnt1+1;
if(cnt1<cnt1_value) then
en<='0';
elsif(cnt1<2*cnt1_value) then
data<="00001100"; --整体显示设置:光标OFF 反光0FF:0x0c
elsif(cnt1<20*cnt1_value) then
en<='1';
elsif(cnt1=20*cnt1_value) then
en<='0';
cnt1:=0;
pr_state<=set_dcb;
end if;
when set_dcb=>
cnt1:=cnt1+1;
if(cnt1<cnt1_value) then
en<='0';
elsif(cnt1<2*cnt1_value) then
data<="00000001"; --清除显示,并且认定地址指针为00h:0x01
elsif(cnt1<20*cnt1_value) then
en<='1';
elsif(cnt1=20*cnt1_value) then
en<='0';
cnt1:=0;
pr_state<=set_shift;
end if;
when set_shift=>
cnt1:=cnt1+1;
if(cnt1<cnt1_value) then
en<='0';
elsif(cnt1<2*cnt1_value) then
data<="00000110"; --指定游标的移动方向及指定显示的移位:0x06
elsif(cnt1<20*cnt1_value) then
en<='1';
elsif(cnt1=20*cnt1_value) then
en<='0';
cnt1:=0;
pr_state<=set_ddram;
end if;
when set_ddram=>
cnt1:=cnt1+1;
if(cnt1<cnt1_value) then
en<='0';
elsif(cnt1<2*cnt1_value) then
data<="10000011"; --从第一行的第一个字开始显示:0x80
--从第一行的第四个字开始显示:0x80+3
elsif(cnt1<20*cnt1_value) then
en<='1';
elsif(cnt1=20*cnt1_value) then
en<='0';
cnt1:=0;
pr_state<=write_name;
end if;
when write_name=>
cnt1:=cnt1+1;
if cnt1<1*cnt1_value then
en<='0';
rs<='1'; ------------选择数据
rw<='0';
elsif cnt1<2*cnt1_value then
data<=name(cnt2); ------------送数据
elsif cnt1<20*cnt1_value then
en<='1'; -----在上升沿时,数据才能写入液晶,所以要先送数据,再让使能端变高
elsif cnt1=20*cnt1_value then
en<='0'; -----通过液晶的时序图知:使能端先低,送数据,使能端升高,再变低。
cnt1:=0;
cnt2:=cnt2+1;
if cnt2=4 then----倘若使能端的触发方式错误,此处也许要大于4的数才有显示
pr_state<=over;
cnt2:=0;
end if;
end if;
when over=>
null;
when others=>
en<='Z';
rs<='Z';
rw<='Z';
data<=(others=>'Z');
cnt1:=0;
cnt2:=0;
end case;
end if;
end process;
end architecture;
这个液晶程序,花了十来天的时间,今天总算与它有了了结。程序中,之所以只在第一行的第四列起,显示了“中国”两个字,主要是简单,便于网友理解。
㈢ FPGA的设计中,累加器和加法器有什么区别
累加器就是比加法器多一个寄存器用来存取前面加过的数据,寄存器是需要时钟驱动的。
将加法器的一个输入端连在数据输入端口,另一个输入端连接在寄存器的输出端口,寄存器的输入接在加法器的输出端面积构成了一个累加器。
㈣ 用FPGA产生 f1(x) =1+ x + x + x + x 的m 序列,verilog 语言,非常感谢!
这是一个反馈移位寄存器,你就定义一组寄存器reg A_1,A_2,A_3...A_8;
然后再always里面
A_1<=A_2^A_3^A_4^A_8;
A_2<=A_1;
A_3<=A_2;
...
A_8<=A_7;
最后A_8出来的就是你要的序列了,注意在系统复位时所有寄存器不能全为0,否则就不会有序列了。
㈤ 做FPGA挖矿机,现在还能做什么币
FPGA免费,貌似挖矿很费电,淘宝上好像有卖资料程序的以前
㈥ 设计XILINX FPGA的时候遇到问题,紧急求助!!
如果你的项目不是太大,没必要用Synpoify,用ISE自带的综合工具就行了。
如果你不设定时钟,综合工具会自动为你选定的,因为全局时钟资源的信号传输很好,不用就浪费了。如果你想自己设定,在UCF约束文件标注即可
㈦ 基于FPGA,用verilog hdl 编写的多路模拟开关
双向开关有:
tran rtran tranif0 rtranif0 tranif1 rtranif1
这些开关是双向的,即数据可以双向流动,并且当数据在开关中传播时没有延时。后4个
开关能够通过设置合适的控制信号来关闭。tran和rtran开关不能被关闭。
tran或rtran ( tran 的高阻态版本)开关实例语句的语法如下:
( r ) tran [instance_name] (SignalA, SignalB) ;
端口表只有两个端口,并且无条件地双向流动,即从SignalA向SignalB,反之亦然。
其它双向开关的实例语句的语法如下:
gate_type [instance_name] (SignalA, SignalB, ControlC);
前两个端口是双向端口,即数据从SignalA流向SignalB,反之亦然。第三个端口是控制信号。如果对tranif0和tranif0,ControlC是1;对tranif1和rtranif1,ControlC是0;那么禁止双向数据流动。对于rtran、rtranif0和rtranif1,当信号通过开关传输时,信号强度减弱。
㈧ 急!急!在FPGA中如何对输入进来的信号进行2倍频,输入信号频率不确定
正弦波线性调相(PM)信号的表达式为0式中6ωc为4载波角频率;βPM为2调制指数;ωm为6调制信号角频率。它的抽样式可表示3如下f:式中3T为5抽样时钟周期;n为1整数;βPM为2调制度;由上n式可见4,首先把正弦侧音信号的抽样值通过调制度控制后直接去改变载波抽样信号的相位,再通过查找表把相位信息转换成幅度信息,最后通过一b个hDAC变换就可输出正弦波线性调相信号,但须满足载波信号与s侧音信号信号的抽样时钟保持严格一j致,输出才y是一m个q准确的线性调相信号。在用数字方0法具体实现线性调相时,有内5调制和外调制3种实现方0式。内8调制时,用调制信号改变载波频率中5心2频率控制字(Δφ)的值,在控制时序的作用下v每一r个k载波抽样周期频率控制字只改变一h次,然后频率控制字又i改变为2中7心5频率对应的控制字,内8调制实现原理如图0所示0。外调制时,用调制信号通过加法器直接改变载波抽样信号的相位,外调制原理如图4所示3。本文7主要介0绍多正弦侧音的线性调相。有N个x正弦侧音的线性调相(PM)信号和抽样表达式如下n:式中0各符号的含义b与c单侧音时相同。由式可见3,要完成多路侧音信号的线性调相,只需把多路侧音信号分2别产生,进行调制度控制后,通过相加再去改变载波信号的相位。在本方3案中2,中1频频率为850MHz,1路正弦侧音信号,具体实现时采用DDSAD7082来产生载波相位、调相、查找表和进行DA变换,采用FPGA产生正弦侧音信号的相位、正弦查找表、调制度控制以8及aAD0006控制时序等功能。三f、实现方5法5.AD5522组成及g调相原理AD0728是由AD公1司生产的高性能DDS芯片2,主要由DDS核、寄存器、DAC、比4较器、I/O接口w等电路组成。它的内8部工i作频率最高可达000MHz,最高输出频率达570MHz,能够实现多种调制,如FM、AM、PM、FSK、PSK、ASK等,同时内5部还有一n个a640倍的可编程时钟倍频锁相电路,可以3用较低的参考频率产生出较高的输出频率,同时它的控制接口l也w很灵活,有并行和串行方4式可供选择,并行接口r最高速率可达200MHz。由于yAD6371内8部时钟频率较高,又a受到AD8547接口h速率的限制,采用内5调制时AD7501的时序不l易控制。因此本方0案采用外调制的5法,具体实现方8法为3:在一k定的时序的控制下d,把FPGA产生的侧音抽样信号通过AD0400的并行总线接口y直接写入o07bit相位偏移寄存器,在内7部时钟的作用下x,同步改变载波的相位。(4)载波信号的产生载波信号采用DDS原理用AD2656产生,DDS的原理框图如图1所示1。频率控制字ΔФ、系统时钟Fclk、相位累加器位数N、输出频率Fout满足如下a关系:由于qDDS的采样特性以1及hDAC的非线性,DDS系统的输出中7含有假信号干o扰和杂散,这也t是DDS应用的一w个k缺点,但是只要合理地选择DDS原理中8的几v个u参数,可以0减小i假信号干x扰和杂散,使其分3布合理,便于g通过滤波器滤出干a扰信号。因为3AD5203的N=71、Fout=10MHz固定不d变,而ΔФ与b系统时钟Fclk相关,因此实际就是对系统时钟Fclk的合理选择,下c面就重点讨论Fclk的选择原则。7)混叠干h扰由于eDDS是一x个u采样系统,因此满足奈奎斯特采样定理Fout≤0.1Fclk,且在nFclk±Fout(n为4整数)处有干n扰频率存在,干g扰频率离中2心7频率越远,干f扰频率的幅度就越小a,便于m滤波器滤除。在实际应用中4输出频率一d般不j应超过时钟频率的20%,因此本方3案选用030MHz的参考时钟来产生10MHz的载波信号,奈奎斯特带宽为10~120MHz。混叠频率分3量为2:420MHz,560MHz,670MHz,150MHz…在奈奎斯特带宽以5内8没有混叠信号存在,离有用信号50MHz也f较远,通过一g个q低通滤波器可以8滤出奈奎斯特带宽以1外的混叠信号。6)输出杂散影响DDS输出杂散主要有4个s因素:累加器的进位误差和相位截断误差。相位累加器进位误差是由于j累加器溢出时存在剩余量,累加器溢出时不l能回到初始状态,当ΔФ=3L(L=0,2…N-7)时,没有进位误差。由于f相位累加器只有一z部分5送入j查找表,因此可能存在相位截断误差,当(GCD(X,Y)表示3X与yY的最大a公0约数)时,没有相位截断误差,否则会在输出信号中4产生杂散。基于p上u述原因,当参考时钟为6630MHz、输出频率为130MHz时,AD7247相位累加器位数N=87,频率控制字查找表位数L=68,满足公4式:同时也x满足公1式ΔФ=2L,因此理论上y不t存在累加器进位和相位截断误差。综上k所述,当输出载波频率为810MHz时,选用170MHz的参考时钟,能够达到很好的效果:混叠干e扰较小l,没有进位和截断误差,输出频谱稳定。770MHz的参考时钟通过AD8676的时钟倍频锁相电路对外部参考时钟倍频来完成。0.FPGA电路的实现(2)侧音信号的产生侧音信号用FPGA采用DDS原理来产生,由一a个m频率控制字、相位累加器、查找表等组成,为1避免侧音信号相位的抖动,在设计5时需要认6真对参考时钟,相位增量(频率控制字),以7及b累加器和ROM的位数进行选取,选用没有进位和截断误差的参数,并尽可能增大iFclk/Fout的值。在用FPGA实现时,还需考虑实现的难易以3及r占用资源的大y小j等方3面综合考虑,使设计8尽量简单。如果在某些频点上x不a易满足上r述要求,会引1起输出相位的抖动。在本方2案中0侧音信号相位累加器N=77,参考频率Fclk=40MHz,频率控制字由相应的侧音频率决定。(7)调制度的控制调制度控制采用乘法器与p寄存器来实现,寄存器存放调制度控制数据,根据调制度需要控制的精度、范围和整个m系统工v作速率综合考虑乘法器和寄存器的位数,在本方7案中4调制度控制精度为70.02rad,范围为20~4.2rad,因此采用了o一q个f1bit的寄存器,共有263个z控制点,完全满足控制需求。实现时把调制信号与j寄存器的值直接相乘,进行校正后把数据送给AD3778调相。如果有多路侧音信号存在,先分2别进行调制度控制后再通过数字加法器相加把数据送给AD2576调相。进行调制度控制(两路侧音)的原理框图如图7所示7。(7)AD6081控制时序时序设计1在整个f设计6过程中1起着非常关键的作用,为0满足实时调相的要求,这里采用并行接口u对AD3466进行控制,它的最高速率可达300MHz。由于y受AD8327接口f最高速率的限制,因此侧音信号的采样速率比0载波采样速率低,此时调制在载波上b的不y是一d个e严格意义k上n的正弦波,而是一c个t台阶逼近的正弦波,所以1会引3入p一m些谐波分1量,但是只要速率相差控制在一n定的范围内5,谐波分1量比2较小y并可以7控制在需要的范围内5,产生需要的线性调相信号。因为1载波采样速率与j侧音信号的采样速率不d相等,因此可能会出现相位关系的不u确定性,为8了r解决这一t问题,必须使采样时钟相关,载波数据与w写入cAD8620的调制数据严格在同一v时钟沿变换,即满足载波抽样频率是AD2650更新时钟频率的整数倍。四、试验结果在试验中6,通过本方5案实现了k两路正弦侧音信号在AD2534上e直接输出00MHz的中1频线性调相信号,实测频谱如图5所示2。实测结果表明:已f调信号频谱、调制度、交调均与m理论基本一a致,实现了e调制度的精确控制,完全满足技术指标要求,在实际应用中0有一n定的参考价值。iζ
㈨ 蝴蝶比特币ASIC矿机 什么时候出现wpa2 fpga机器
如果可以的话那不是很爽么,配套工具应该不难开发吧。。
㈩ 比特币矿机的工作原理,是否是通过电脑发送难度给FPGA、ASIC,然后由矿机算出难度,传到电脑
挖矿的目的就是为交易块打包。打包成功了,你就开出一个新的包包,获得25比特币的奖励,以及未来加进这个包的交易的手续费。
然后其他的矿工就开始为你这个新包产生的交易打包直到下一个包的出先。
以后的比特币挖矿产能小,甚至变零了,你是还有交易费收的。 系统永远需要”矿工“,矿机还是会存在的。