VL33 非整数倍数据位宽转换8to12和上一题一样的,注意valid_out输出时加一个valid_in(其实32题也要加,不过不加仿真也能过)。`timescale1ns/1nsmodulewidth_8to12(inputclk,inputrst_n,inputvalid_in,input[7:0]data_in,outputregvalid_out,outputreg[11:0]data_out);reg[2:0]count;always@(posedgeclkornegedgerst_n)beginif(~rst_n)count0;elseif(valid_in)count2)?co
一、m_sequencer1、什么是m_sequencerm_sequencer是定义在uvm_sequencer_item中的,uvm_sequencer_base类型的句柄,也就是说m_sequencer是uvm_sequencer_item的成员变量m_sequencer是指向uvm_sequencer_base的句柄任何派生于uvm_sequencer_item的类都会拥有一个m_sequencerm_sequencer源码如下:classuvm_sequence_itemextendsuvm_transaction;...protecteduvm_sequencer_basem_se
VL25 输入序列连续的序列检测这种题用移位寄存器是最方便的,用状态机会麻烦很多。`timescale1ns/1nsmodulesequence_detect(inputclk,inputrst_n,inputa,outputregmatch);reg[7:0]seq;always@(posedgeclkornegedgerst_n)beginif(~rst_n)beginseq0;match0;endelsebeginseq6:0],a};if(seq==8'b01110001)match1;elsematch0;endendendmoduleVL26 含有无关项的序列检测和上一题一样用移位
VL21 根据状态转移表实现时序电路写一个简单的Moore状态机就可以了,太短就懒得写三段式了。`timescale1ns/1nsmoduleseq_circuit(inputA,inputclk,inputrst_n,outputwireY);reg[1:0]state;always@(posedgeclkornegedgerst_n)beginif(~rst_n)state0;elsebegincase(state)0:state3:1;1:state0:2;2:state1:3;3:state2:0;endcaseendendassignY=(state==2'b11);endmodul
VL11 4位数值比较器电路根据题目真值表把情况全部列出来,纯体力活。`timescale1ns/1nsmodulecomparator_4(input[3:0]A,input[3:0]B,outputwireY2,//A>BoutputwireY1,//A=BoutputwireY0//A);assignY2=(A[3]&~B[3])||((~A[3]^B[3])&&(A[2]&~B[2]))||((~A[3]^B[3])&&(~A[2]^B[2])&&(A[1]&~B[1]))||((~A[3]^B[3])&&(~A[2]^B[2])&&(~A[1]^B[1])&&A[0]&~B[0]);
VL1 四选一多路器`timescale1ns/1nsmodulemux4_1(input[1:0]d1,d2,d3,d0,input[1:0]sel,output[1:0]mux_out);//*************code***********//assignmux_out=(sel==0)?d3:((sel==1)?d2:((sel==2)?d1:d0));//*************code***********//endmoduleVL2 异步复位的串联T触发器题目已经提示了是两个串联的T触发器,只要记得T触发器在输入高电平时,输出翻转即可。`timescale1ns/1nsm
这次设计一个DDS信号发生器。该设计的特点有:双通道的DA输出,可以调节幅度(通过旋转板子上的电位器)、频率、相位、和波形(正弦波、方波、三角波)。拥有相位重置的功能,能够同时重置两个输出波形的相位。本次采用的是小梅哥的ACM2108模块。该模块有两个通道的ADC和两个通道的DAC。本次设计的前置是DDS基本模块,具体可点击链接查看。DDS基本模块在加入了装有正弦波数据的ROM的基础上,再添加三角波和方波的数据的ROM,从而能够切换输出的波形。通过调用VIO这个IP核,设置输出信号的频率、相位和波形。然后通过LIA这个IP核,去观察数据波形。一、模块代码`timescale1ns/1ps///
最近在写一本Xilinx的FPGA方面的书,现将HLS部分内容在这里分享给大家,希望大家喜欢,也欢迎批评指正。以下原创内容欢迎网友转载,但请注明出处: https://www.cnblogs.com/helesheng在可编程逻辑器件被用于电子系统设计的前期,由于所含的逻辑资源较少,绝大部分情况下,它们被用于实现数据的传输和接口电路。工程师们习惯于使用寄存器传输级(RTL)的描述方式来开发可编程逻辑器件,以提高对逻辑资源的利用率。但正如我们在前面的章节中看到的,使用VerilogHDL这样的硬件描述语言进行RTL级的开发是一件非常费时、费力的事。另一方面,随着摩尔定理的不断发展,集成在可编程逻
一、DDS工作原理以正弦信号为例,DDS大概就是将M个点的一个周期的正弦序列存入ROM中,序列数据的地址就是正弦信号的相位;通过修改频率控制字(Fword)来改变每隔多少个地址取ROM里的数据进行输出。频率控制字越大,从ROM取出的数据点就越少,点数越少,输出一个周期信号的时间就越短,从而改变了输出信号的频率;通过修改相位控制字(Pword)来改变读取ROM里的数据的初地址(就是给ROM地址增加偏移量),从而改变输出信号的初相。DDS的基本结构图如下图所示:输出信号的频率的公式为:其中\(F_{CLK}\)为模块的时钟频率,\(F_{Word}\)为频率控制字,N为相位累加器的位宽(和频率控制
1、创建工程后点击IPCatalog2、在搜索栏搜索ROM,并选择BlockMemoryGenerator3、在弹出来的界面中选择单口ROM4、然后修改位宽和深度(这里根据我的需求设置为8位宽,4096深度);并把使能端口取消;勾上CoreOutputRegister,使数据延迟一个时钟周期输出;由于有primitivesOutputRegister的原因总的会延迟两拍输出。。5、然后打开小梅哥的Mif精灵,选择Xilinx、位宽为8为,深度为4096、最大值为256然后点击OK后在软件所在的文件夹生成coe文件。6、将coe文件放在找得到的地方,并来到OtherOptions,勾上LoadI